linux环境下随时照看服务器进程的ps和top命令

前言

在linux环境服务器下通常是不会安装图形界面的,这时如果想看程序是否在正常运行着,就不能像在windows上一样去查看任务管理器,而是需要通过命令来查询程序的进程运行情况,ps 就是一个查询linux环境下进程运行状态的命令,请注意这个可不是我们P图用的那个工具哦。

ps命令

ps 命令在man手册中描述是 “report a snapshot of the current processes”,其实它的作用就是上报程序运行时的一个快照。

ps displays information about a selection of the active processes. If you want a repetitive update of the selection and the displayed information, use top(1) instead.

man手册中的这句话也很好理解,ps 命令执行一次就会显示一次所选进程的信息,若想重复刷新显示所选进程的信息,可以使用 top 命令,从作用上来看,可以简单理解为 top 命令是一个反复执行的 ps 命令。

语法格式

ps [options]

ps 命令的格式很简单,但是为什么感觉同一个查询进程的需求,每个人写出来的命令都不太一样呢?其实这是因为有好几种语法规范,无论怎么写都可以,甚至交叉混合的写命令都是能识别的,比如最常见的查询所有进程有些人会写成 ps -ef,而有的人会写成 ps aux,这两种都是可以的。

语法规范

ps -ef 是使用了UNIX选项,是一种标准语法,而 ps aux使用了BSD选项,是一种BSD语法,另外还有一种加两个短横线的写法,例如 ps --pid 3678,这是一种GNU长选项。

常用的ps选项

  1. 显示所有的进程,一般搭配grep使用
ps aux | grep processname
  1. 显示指定的列,可以使用 -eo 来指列名,我最常用的 cmd 是启动时的命令,lstart 是启动时的时间
[root@VM-0-3-centos ~]# ps -eo cmd,lstart | grep sshd
usr/sbin/sshd -D           Tue Feb  9 11:13:55 2021
  1. 以树形结构显示进程
ps -axjf
  1. 查询指定用户的进程
ps -fu root
  1. 按cpu使用率降序排序
ps -aux --sort -pcpu
  1. 按内存使用率降序排序
ps -aux --sort +pmem

ps命令的表头

[root@VM-0-3-centos ~]# ps -aux --sort -pcpu
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root     17444  0.4  3.7 994796 71276 ?        Sl    2021 181:54 /usr/local/qcloud/YunJing/YDEyes/YDService
root      8572  0.3  0.7 614824 14416 ?        Sl   Jan20  21:35 barad_agent
root         1  0.0  0.1 191084  3336 ?        Ss    2021  76:42 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root         2  0.0  0.0      0     0 ?        S     2021   0:09 [kthreadd]
root         4  0.0  0.0      0     0 ?        S<    2021   0:00 [kworker/0:0H]
root      1063  0.0  0.0 110208   792 tty1     Ss+   2021   0:00 /sbin/agetty --noclear tty1 linux
root      1064  0.0  0.0 110208   772 ttyS0    Ss+   2021   0:00 /sbin/agetty --keep-baud 115200,38400,9600 ttyS0 vt220
root      2388  0.0  0.1 157696  1952 pts/0    R+   00:27   0:00 ps -aux --sort -pcpu
root         6  0.0  0.0      0     0 ?        S     2021  13:09 [ksoftirqd/0]

执行 ps 命令通常有以上几列:USERPID%CPU%MEMVSZRSSTTYSTATSTARTTIMECOMMAND

USER:进程所属用户名
PID:进程ID
%CPU:进程CPU使用率,注意所有CPU使用率加起来可以超过100%,如果有4个CPU,在不考虑多核的情况下,最大应该为400%
%MEM:进程内存使用率,可以配合 free -h 命令使用
VSZ:进程使用的虚拟内存量
RSS:进程占用的固定内存量
TTY:进程在哪个终端上运行,若与终端无关,则显示 ?
STAT:进程启动的时间
START:进程状态,是一个组合值,每个符号有单独含义,见下文
TIME:进程使用CPU运行的时间
COMMAND:启动进程时执行的命令的名称和参数

进程状态

这一部分是要是对man手册的翻译内容

Here are the different values that the s, stat and state output specifiers (header "STAT" or "S")
    will display to describe the state of a process:

           D    uninterruptible sleep (usually IO)
           R    running or runnable (on run queue)
           S    interruptible sleep (waiting for an event to complete)
           T    stopped by job control signal
           t    stopped by debugger during the tracing
           W    paging (not valid since the 2.6.xx kernel)
           X    dead (should never be seen)
           Z    defunct ("zombie") process, terminated but not reaped by its parent

   For BSD formats and when the stat keyword is used, additional characters may be displayed:

           <    high-priority (not nice to other users)
           N    low-priority (nice to other users)
           L    has pages locked into memory (for real-time and custom IO)
           s    is a session leader
           l    is multi-threaded (using CLONE_THREAD, like NPTL pthreads do)
           +    is in the foreground process group

常规状态码

D: 无法中断的休眠状态(通常 IO 的进程)
R: 正在运行可中在队列中可过行的;
S: 处于休眠状态
T: 停止或被追踪
W: 进入内存交换(从内核2.6开始无效)
X: 死掉的进程(基本很少见)
Z: 僵尸进程,想杀死通常需要重启系统

BSD格式状态码

<: 优先级高的进程
N: 优先级较低的进程
L: 有些页被锁进内存
s: 一个会话进程的领导者(在它之下有子进程)
l: 多进程的(使用 CLONE_THREAD, 类似 NPTL pthreads)
+: 位于后台的进程组

进程相关的后续命令

  1. 查询进程的可执行文件所在位置
cat /proc/进程id
  1. 按进程名查询进程id
pidof 进程名

top命令

语法格式

top [options]

top 命令的man手册巨长,它的作用是动态显示进程状态,实际上就是一份份静态数据间隔显示而已,虽然他也有很多参数,但是通常仅使用一个 top 命令即可。

常用的top选项和快捷键

  1. 显示top帮助
top -hV
  1. 按照CPU使用率排序

运行top命令后,输入大写字母P,也就是按快捷键 ctrl+p

  1. 按照内存使用率排序

运行top命令后,输入大写字母M,也就是按快捷键 ctrl+m

  1. 展开多核cpu显示

运行top命令后,输入数字1

  1. 切换显示命令名称和完整命令行

运行top命令后,输入小写字母c

  1. 切换显示平均负载和启动时间信息

运行top命令后,输入小写字母l

top命令的表头

[root@VM-0-3-centos ~]# top

top - 00:07:35 up 0 min,  0 users,  load average: 0.52, 0.58, 0.59
Tasks:   4 total,   1 running,   3 sleeping,   0 stopped,   0 zombie
%Cpu(s):  3.4 us,  8.0 sy,  0.0 ni, 88.4 id,  0.0 wa,  0.2 hi,  0.0 si,  0.0 st
KiB Mem :  8248540 total,  3284196 free,  4727868 used,   236476 buff/cache
KiB Swap: 13107196 total, 13080444 free,    26752 used.  3379816 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
    1 root      20   0    8940    316    272 S   0.0  0.0   0:00.15 init
   10 root      20   0    8940    224    176 S   0.0  0.0   0:00.00 init
   11 albert    20   0   15024   3568   3468 S   0.0  0.0   0:00.24 bash
   38 albert    20   0   15900   1960   1420 R   0.0  0.0   0:00.04 top

执行 top 命令后默认有这些列 PIDUSERPRNIVIRTRESSHRS%CPU%MEMTIME+COMMAND,它们的含义分表是:

PID:进程id
USER:进程所有者用户名
PR:优先级
NI:NICE值.负值表示高优先级,正值表示低优先级
VIRT:进程使用的虚拟内存总量,单位KB,VIRT=SWAP+RES
RES:进程使用的未被换出的物理内存大小,单位KB,RES=CODE+DATA
SHR:共享内存大小,单位KB,
S:进程状态,D=不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程
%CPU:CPU使用百分比
%MEM、内存使用百分比
TIME+:进程使用的CPU时间总计,单位1/100秒
COMMAND:启动命令

总结

  • 显示所有进程可以使用 ps -ef 或者 ps aux,他们通常是后续过滤的第一步
  • 按cpu使用率降序排序使用 ps aux --sort -pcpu,按内存使用率降序排序使用 ps aux --sort +pmem
  • top 命令结果的第一行是整体信息,包括了当前时间,系统已运行时间,登录用户数,系统负载等信息
  • top 命令中按大写字母 P 会按照CPU排序,按大写字母 M 会按照内存排序

==>> 反爬链接,请勿点击,原地爆炸,概不负责!<<==

小孩子才有对错,长大了都是利益。做选择的本质是分类,权衡利弊的过程是分类,趋利避害的行事生活更是分类,所以遇到选择我们才要考虑方方面面,因为这样我们才有足够的理由来把它归为有利的一类,还是有害的一类~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AlbertS

常来“玩”啊~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值