ToolkitX
知识库工具箱

进程管理

ps, top, kill, nohup, systemctl

20min·入门

01. 查看进程

进程就是正在运行的程序。你的服务器上同时跑着几百个进程,ps 能帮你看到它们:
bash
ps aux                          # 列出所有进程,详情满满
ps aux | grep nginx             # 精确找 nginx 进程
ps -ef                           # 另一种全格式,UNIX 风格
ps -eo pid,ppid,user,%cpu,%mem,cmd  # 只显示你关心的列
ps -ef --forest                  # 树状图,父子进程关系一目了然

02. 实时监控

ps 是拍照片,top 是拍视频——实时刷新告诉你谁在吃 CPU、谁在占内存。就像 Windows 的任务管理器,只不过是在命令行里:
bash
top                              # 实时监控,按 q 退出
# top 里的快捷键(不用记,进去就知道):
# P - 按 CPU 用量排序
# M - 按内存用量排序
# k - 输入 PID 杀进程
# q - 退出

htop                             # top 的彩色升级版,需单独安装
top -bn1 | head -20              # 非交互模式,抓一次快照

03. 进程控制

进程不听话就得管。kill 不是「杀死」而是「发信号」,信号有好几种,温柔地劝退还是直接毙掉由你定:
bash
kill PID                         # 发 SIGTERM 信号,客气地请进程自己退出
kill -9 PID                      # 发 SIGKILL 信号,直接毙掉,不给收拾的时间
killall nginx                    # 按名字杀,所有叫 nginx 的进程全干掉
pkill -f "python app.py"         # 按完整命令匹配来杀

nohup command &                  # 后台运行 + 防断线,关了终端也在跑
disown %1                        # 把任务从当前 shell 里摘出去
jobs                             # 看看有多少后台任务
fg %1                            # 把后台任务拉回前台
bg %1                            # 把暂停的任务放到后台继续跑

04. systemctl 服务管理

systemd 是现代 Linux 的大管家,systemctl 是你指挥它的遥控器。开机启动、启停服务、看日志,全用它:
bash
systemctl start nginx             # 启动 nginx
systemctl stop nginx              # 停掉 nginx
systemctl restart nginx           # 重启(stop + start)
systemctl reload nginx            # 热重载配置文件,服务不中断
systemctl status nginx            # 看服务跑得怎么样
systemctl enable nginx            # 设置开机自启
systemctl disable nginx           # 取消开机自启
systemctl list-units --type=service  # 列出所有服务
journalctl -u nginx -f            # 实时看 nginx 的服务日志
systemctl 统一管理所有服务,不管是 nginx、mysql 还是你自己写的程序,都一个语法。

知识测验

1/6正确 0

让一个进程直接毙掉该用哪个信号?

下一节

网络命令详解

下一节