看清进程用ps(快照)和top(动态刷新),控住靠pid、状态(r/s/z/d)、信号(sigterm优先于sigkill),放远靠nohup或systemd。

Linux 服务器上管好进程,核心就三件事:看清它、控住它、放它跑远点。不用背一堆术语,抓住 PID、状态、信号这三点,日常操作基本够用。
怎么看清当前在跑什么进程
最常用的是 ps 和 top:
- ps aux:一次性快照,列出所有用户的所有进程,重点关注 PID(进程号)、USER(谁启动的)、%CPU 和 %MEM(吃多少资源)、STAT(状态,比如 R=运行中、S=睡眠、Z=僵尸)
- ps -ef:重点看父子关系,PPID 列就是父进程 ID,能帮你理清服务是怎么一层层启动的
- top:动态刷新,实时看哪个进程在狂占 CPU 或内存,按 Shift+P 按 CPU 排序,Shift+M 按内存排序,q 退出
- 查某个具体程序?直接组合:ps aux | grep nginx 或 pgrep -f python
怎么安全地停止一个进程
别一上来就 kill -9,先试试“打招呼”:
在无 root/sudo 权限的环境(云容器、VPS、隔离主机)中安装并配置 OpenClaw 浏览器工具的 headless Chrome。适用场景:...
- kill PID(不带参数):发 SIGTERM 信号,相当于礼貌敲门,请进程自己收拾好退出——大多数服务都支持,会保存数据、释放端口
- kill -15 PID:和上面一样,-15 就是 SIGTERM 的数字编号
- kill -9 PID:发 SIGKILL,强制终结,进程连反应机会都没有——只在它卡死、不响应 SIGTERM 时才用
- 按名字杀一批:killall nginx 或 pkill -f "python server.py"
怎么让程序在后台安静运行
避免一关终端就断掉,关键在于脱离终端控制:
- 启动时加 &:./myapp &,立刻返回命令行,但终端关闭后进程通常也会被终止
- 用 nohup 防断连:nohup ./myapp > app.log 2>&1 &,这样即使登出或关掉 SSH,程序也继续跑,输出还记到日志里
- 进阶推荐 screen 或 tmux:开个虚拟终端会话,程序在里面跑,随时 detach(分离)和 reattach(重连),更灵活可靠
- 长期服务请写成 systemd 服务单元,这才是生产环境的标准做法
额外注意两个常见坑
一是僵尸进程(STAT 显示 Z):子进程退出了,但父进程没及时回收,PID 还占着。一般不影响系统,但太多说明父进程有 bug;解决办法通常是重启父进程。
二是不可中断睡眠(STAT 显示 D):进程卡在底层 I/O(比如坏磁盘),kill -9 也杀不死,只能等它自己恢复,或重启系统。










