进程管理入门:查看和控制Linux进程
服务器上跑着很多程序,怎么查看?怎么管理?
今天聊聊Linux进程管理的基础知识。
查看进程
ps命令:
# 查看所有进程psaux# 搜索特定进程psaux|grepnginx输出解读:
USER PID %CPU %MEM VSZ RSS TTY STAT TIME COMMAND root 1234 0.5 2.1 123456 21000 ? Sl 10:23 nginx- USER:运行用户
- PID:进程ID
- %CPU:CPU占用
- %MEM:内存占用
- STAT:进程状态
- COMMAND:命令名
top/htop实时监控:
top常用操作:
- P:按CPU排序
- M:按内存排序
- k:杀进程
- q:退出
推荐用htop,更直观:
aptinstallhtophtop查找进程ID
# 用pgreppgrep nginx# 用pidofpidof nginx# 用ps过滤psaux|grepnginx|awk'{print$2}'杀死进程
用kill命令:
# 正常终止(发送SIGTERM)kill1234# 强制杀死(发送SIGKILL)kill-91234按名称杀:
# 杀所有匹配的进程pkillnginx# 杀所有匹配的进程(更精确)killallnginx先查再杀的套路:
# 找到PIDpsaux|grepnginx# 杀掉kill1234进程状态
R - 运行中 S - 睡眠中(等待事件) D - 不可中断睡眠(通常是IO) Z - 僵尸进程(已结束但未被回收) T - 停止/挂起处理僵尸进程:
僵尸进程(Z状态)本身不占资源,但说明父进程有问题。
# 找僵尸进程的父进程ps-ef|grepdefunct# 找到PPID,kill父进程后台运行
&符号:
./script.sh&nohup命令:
nohup./script.sh&nohup会忽略挂断信号,退出终端后进程继续运行。
查看后台任务:
jobs把后台任务调到前台:
fg%1进程优先级
查看优先级:
ps-eo pid,ni,comm|headNI列是nice值,-20到19,越小优先级越高。
调整优先级:
# 启动时指定nice-n10./script.sh# 修改运行中的进程renice10-p1234系统服务管理
现代Linux用systemd管理服务:
# 查看服务状态systemctl status nginx# 启动/停止/重启systemctl start nginx systemctl stop nginx systemctl restart nginx# 开机自启systemctlenablenginx systemctl disable nginx# 查看所有运行中的服务systemctl list-units --type=service --state=running实战案例
案例1:找出CPU占用最高的进程
psaux --sort=-%cpu|head-10案例2:找出内存占用最高的进程
psaux --sort=-%mem|head-10案例3:杀死所有Java进程
pkill-f java案例4:查看进程的详细信息
# 查看进程打开的文件lsof-p1234# 查看进程的网络连接ss -tlnp|grep1234# 查看进程的资源限制cat/proc/1234/limits案例5:监控特定进程
# 实时看某个进程的资源占用top-p1234# 或者用watchwatch-n1"ps -p 1234 -o %cpu,%mem,cmd"screen/tmux保持会话
SSH断开后想让程序继续跑,用screen或tmux:
# 创建会话screen-S myapp# 运行程序./my_long_script.sh# 分离会话(Ctrl+A然后按D)# 重新连接screen-r myapp即使SSH断了,进程也不会停。
远程进程管理
管理多台服务器的进程,我用星空组网连起来后可以批量操作:
# 批量查看nginx状态foripin10.26.1.{10..15};doecho"===$ip==="sshroot@$ip"systemctl status nginx | head -5"done比一台台登录方便多了。
常用命令速查
| 场景 | 命令 |
|---|---|
| 查看所有进程 | ps aux |
| 实时监控 | top或htop |
| 搜索进程 | pgrep 名称 |
| 杀死进程 | kill PID |
| 强制杀死 | kill -9 PID |
| 按名称杀 | pkill 名称 |
| 后台运行 | nohup command & |
| 服务状态 | systemctl status 服务 |
小结
进程管理核心:
- 看进程:
ps aux/top - 杀进程:
kill/pkill - 后台运行:
nohup ... & - 服务管理:
systemctl
有问题评论区交流~