目录:
啥玩意是进程?
启动一个程序,至少会运行一个进程,有些程序如谷歌浏览器会运行多个进程。
为啥看进程?
直接查看进程列表,就知道系统运行了哪些程序。
为什么需要使用命令查看进程?
像 Windows 和 MacOS 这种有桌面的系统,在桌面最下面看有哪些应用小图标就可以直观看到运行了哪些程序。
但是对于没有桌面的远程服务器,只能通过终端去连接,这个想看系统运行哪些程序,就需要敲命令查看了。
比较常见的一个使用场景:
在服务器上想要干掉某个正在运行的程序,可以使用 ps 命令找到这个程序对应的进程 ID,然后敲 kill -9 <进程ID> 就可以中止这个程序了。
ps 命令用于显示系统中进程的静态状态信息(动态监控需使用top命令)。
输入 ps 命令,可以看到与当前 shell 相关的进程,展示的信息比较简洁。
$ ps
PID TTY TIME CMD
8970 ttys000 0:00.58 -bash
59398 ttys001 0:00.04 -bash
52943 ttys003 0:05.13 hexo
介绍下每一列的含义:
输入 ps aux 显示所有用户的进程详细信息,展示的信息非常详细。
其中:
$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.4 239456 7256 ? Ss 2025 53:42 /usr/lib/systemd/systemd --switched-root --system --deserialize 18
root 2 0.0 0.0 0 0 ? S 2025 0:03 [kthreadd]
root 3 0.0 0.0 0 0 ? I< 2025 0:00 [rcu_gp]
介绍下每一列的含义:
其中 STAT 列非常重要,它用单个或多个字符表示进程的实时状态,重点关注 Z 状态。
直接输入 ps aux 有时输出内容过长、一屏无法完整显示。
可以使用 less 命令分页查看,空格键向下翻页,b 向上翻页,q 退出分页返回命令行。
$ ps aux | less
在网站访问量突增导致 CPU 占用过高时,是快速定位问题进程的首选命令。
# 按 CPU 降序
$ ps aux --sort=-%cpu | head -20
对于排查内存泄漏或优化内存配置非常有用。
# 按内存降序
$ ps aux --sort=-%mem | head -20
# 使用用户名称查询
$ ps -u root
# 使用 UID
$ ps -u 0
$ ps -C nginx
# 或者使用 grep
$ ps | grep nginx
$ ps -p 1234,5678
使用 -o 选项可以自由选择想显示的列。
# 只显示 PID、用户名和命令
$ ps -o pid,user,command
# 显示进程的安全信息,如启动用户和完整参数
$ ps -o pid,user,%cpu,%mem,args
↶ 返回首页 ↶