首页 数字经济

Linux Shell 进程管理命令:让系统资源尽在掌握

分类:数字经济
字数: (7290)
阅读: (9314)
内容摘要:Linux Shell 进程管理命令:让系统资源尽在掌握,

在 Linux 系统管理中,进程管理至关重要。熟练掌握 Linux shell命令 中与进程管理相关的命令,可以帮助我们监控系统资源使用情况、诊断性能瓶颈、以及优雅地启动、停止和管理各种服务。无论是线上服务器遭遇突发高负载,还是日常开发环境调试,都需要用到这些命令。本文将深入剖析常用的进程管理命令,并结合实际案例,帮助大家提升 Linux 技能。

进程查看:ps、top、htop

ps 命令

ps 命令用于报告当前进程的快照。它提供了丰富的选项,可以根据不同的需求筛选和显示进程信息。

  • 常用选项:
    • ps aux:显示所有用户的进程,包括没有控制终端的进程。a 显示所有用户,u 显示用户名/启动用户, x 显示没有控制终端的进程。
    • ps -ef:显示所有进程的详细信息,包括进程 ID (PID)、父进程 ID (PPID)、CPU 使用率、内存使用率等。 e 显示所有进程, f 使用完整的格式。
    • ps -C <command>:根据命令名筛选进程。例如:ps -C nginx 可以显示所有 Nginx 相关的进程。
    • ps -p <pid>:根据进程 ID 筛选进程。 例如:ps -p 12345 可以显示 PID 为 12345 的进程信息。
    • ps --sort=-%cpu:按照 CPU 使用率降序排序进程。

示例:

ps aux | head -n 5  # 显示所有进程的前 5 行
ps -ef | grep nginx # 查找包含 nginx 关键字的进程
ps --sort=-%cpu | head # 查看 CPU 占用率最高的进程

top 命令

top 命令动态显示系统资源使用情况和进程列表。它实时更新,可以帮助我们快速发现占用系统资源较多的进程。

  • 交互式操作:
    • q:退出 top 命令。
    • k:杀死进程 (kill)。需要输入 PID。
    • M:按内存使用率排序。
    • P:按 CPU 使用率排序。
    • 1:显示每个 CPU 核心的使用情况 (多核 CPU)。

使用 top 命令观察 Nginx 的 CPU 和内存占用率

如果 Nginx 服务器使用了宝塔面板进行管理,可以使用 top 实时监控 Nginx 进程,特别是当并发连接数增高,导致服务器 CPU 飙升时。 通过 top 命令,快速定位 Nginx 进程,判断是否存在慢请求或其他性能问题。

Linux Shell 进程管理命令:让系统资源尽在掌握

htop 命令

htop 命令是 top 命令的增强版,提供了更友好的交互界面和更丰富的信息展示。它使用彩色显示,可以更清晰地观察系统资源使用情况。如果系统没有预装 htop,可以通过包管理器安装,如 apt install htop (Debian/Ubuntu) 或 yum install htop (CentOS/RHEL)。

htoptop 更方便的一个地方是,可以使用鼠标操作,例如选中进程直接 kill。 使用 shift + H 可以隐藏线程。

进程控制:kill、killall、pkill、nohup

kill 命令

kill 命令用于向进程发送信号。默认情况下,发送 SIGTERM 信号 (15),请求进程终止。如果进程没有响应,可以发送 SIGKILL 信号 (9) 强制终止进程。

  • 常用信号:
    • SIGTERM (15):正常终止信号,进程可以选择忽略或捕获该信号,然后做一些清理工作后退出。
    • SIGKILL (9):强制终止信号,进程无法忽略或捕获该信号,会立即被操作系统终止。 谨慎使用,可能导致数据丢失。
    • SIGHUP (1):挂断信号,通常用于重新加载配置文件,例如 Nginx 使用 kill -HUP <pid> 重新加载配置。

示例:

kill 12345  # 终止 PID 为 12345 的进程 (发送 SIGTERM)
kill -9 12345 # 强制终止 PID 为 12345 的进程 (发送 SIGKILL)
kill -HUP $(pidof nginx) # 平滑重启 Nginx,重新加载配置文件

killall 命令

killall 命令根据进程名终止进程。比 kill 命令更方便,无需查找 PID。

Linux Shell 进程管理命令:让系统资源尽在掌握

示例:

killall nginx # 终止所有名为 nginx 的进程

pkill 命令

pkill 命令也是根据进程名终止进程,并且支持更灵活的匹配模式,例如可以使用正则表达式。

示例:

pkill -f 'python my_script.py' # 终止所有包含 'python my_script.py' 字符串的进程

nohup 命令

nohup 命令用于在后台运行命令,即使终端关闭,命令也会继续运行。常用于启动长期运行的服务。

示例:

Linux Shell 进程管理命令:让系统资源尽在掌握
nohup python my_script.py > my_script.log 2>&1 & # 在后台运行 python 脚本,并将输出重定向到 my_script.log 文件
  • >:标准输出重定向到文件。
  • 2>&1:将标准错误输出重定向到标准输出。
  • &:将命令放入后台执行。

实战避坑: 使用 nohup 命令时,务必将输出重定向到文件,否则输出会写入 nohup.out 文件,可能会占用大量磁盘空间。 另外,使用 nohup 后,需要使用 disown 命令将进程从当前 shell 会话中分离,避免会话结束后进程被终止。

后台进程管理:bg、fg、jobs

bg 命令

bg 命令将暂停的进程放入后台继续运行。通常与 Ctrl+Z 组合使用。 Ctrl+Z 会暂停当前正在运行的进程。

示例:

./my_script.sh  # 运行脚本
Ctrl+Z         # 暂停脚本
bg              # 将脚本放入后台继续运行

fg 命令

fg 命令将后台进程切换到前台运行。

示例:

Linux Shell 进程管理命令:让系统资源尽在掌握
fg %1 # 将第一个后台进程切换到前台运行

jobs 命令

jobs 命令列出当前会话中的所有后台进程。

示例:

jobs  # 列出所有后台进程

实战案例:利用 Linux Shell命令排查 CPU 占用率高的 Nginx 进程

  1. 使用 top 命令找到 CPU 占用率最高的进程。
  2. 如果发现是 Nginx 进程占用率高,则使用 ps -ef | grep nginx 找到所有 Nginx 进程的详细信息,包括 worker 进程的 PID。
  3. 使用 strace -p <nginx_worker_pid> 跟踪 Nginx worker 进程的系统调用,分析是否存在耗时操作,比如频繁的磁盘 I/O 或网络请求。 (需要安装 strace 工具)
  4. 检查 Nginx 的 access log 和 error log,查找是否存在慢请求或错误日志。
  5. 如果 Nginx 使用了 Lua 脚本,检查 Lua 脚本是否存在性能问题。

通过以上步骤,可以定位 CPU 占用率高的 Nginx 进程的根本原因,并采取相应的优化措施,例如优化 Nginx 配置、调整 worker 进程数量、优化 Lua 脚本等。 理解 Linux shell命令 的强大之处,在于可以将这些命令组合起来,构建自动化脚本,监控和管理系统。

熟练掌握这些 Linux shell命令,可以帮助我们更好地管理 Linux 系统,提升工作效率。在实际工作中,需要根据具体情况灵活运用这些命令,解决各种问题。

Linux Shell 进程管理命令:让系统资源尽在掌握

转载请注明出处: 加班到秃头

本文的链接地址: http://m.acea2.store/blog/698104.SHTML

本文最后 发布于2026-04-15 14:58:47,已经过了12天没有更新,若内容或图片 失效,请留言反馈

()
您可能对以下文章感兴趣
评论
  • 社恐患者 3 天前
    nohup 那个避坑经验很实用,之前就遇到过 nohup.out 撑爆磁盘的情况,太真实了。
  • 吃土少女 1 天前
    写得很详细,ps、top、kill 这些都是日常必备啊!
  • 芒果布丁 6 天前
    写得很详细,ps、top、kill 这些都是日常必备啊!