查看进程命令

ps命令

[root@i-ka ~]#ps -l
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0 17236 17233  0  80   0 - 28946 wait   pts/0    00:00:00 bash
0 R     0 17274 17236  0  80   0 - 37233 -      pts/0    00:00:00 ps

每个字段的意义简单说明如下:

F (flag):代表程序的总结旗标,常见为4 代表root
S (stat):状态列,主要的分类项目有:
             R (Running):该程式正在运作中;
             S (Sleep):该程式目前正在睡眠状态(idle),但可以被唤醒(signal)。
             D :不可被唤醒的睡眠状态,通常这支程式可能在等待I/O 的情况(ex>列印)
             T :停止状态(stop),可能是在工作控制(背景暂停)或除错(traced) 状态;
             Z (Zombie):僵尸状态,程序已经终止但却无法被移除至记忆体外。
UID/PID/PPID:代表『此程序被该UID 所拥有/程序的PID 号码/此程序的父程序PID 号码』
C:代表CPU 使用率,单位为百分比;
PRI/NI:Priority/Nice 的缩写,代表此程序被CPU 所执行的优先顺序,数值越小代表该程序越快被CPU 执行。
ADDR/SZ/WCHAN:都与记忆体有关,ADDR 是kernel function,指出该程序在记忆体的哪个部分,如果是个running 的程序,一般就会显示『 - 』 / SZ 代表此程序用掉多少记忆体/ 表示目前程序是否运作中,同样的, 若为- 表示正在运作中。
TTY:登入者的终端机位置,若为远端登入则使用动态终端介面(pts/n);
TIME:使用掉的CPU 时间,注意,是此程序实际花费CPU 运作的时间,而不是系统时间;
CMD:就是command 的缩写,造成此程序的触发程式之指令为何。

ps aux

[root@i-ka ~]# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0 125196  2640 ?        Ss    2019  23:56 /usr/lib/systemd/sy
nginx      898  0.0  0.0  55636   640 ?        S     2019   0:01 nginx: worker proce
redis     1012  0.0  0.0 142904  1068 ?        Ssl   2019  48:14 /usr/bin/redis-serv

每一个项目代表的意义简易说明如下:

USER:该process 属于那个使用者帐号的
PID :该process 的程序识别码。
%CPU:该process 使用掉的CPU 资源百分比;
%MEM:该process 所占用的实体内存百分比;
TTY :该process 是在那个终端机上面运作,若与终端机无关则显示?,另外, tty1-tty6 是本机上面的登入者程序,若为pts/0 等等的,则表示为由网路连接进主机的程序。
STAT:该程序目前的状态,状态显示与ps -l 的S 旗标相同(R/S/T/Z)
START:该process 被触发启动的时间;
TIME :该process 实际使用CPU 运作的时间。
COMMAND:该程序的实际指令

pstree

[root@i-ka ~]#pstree [选项] [PID或用户名]  #查看进程树
常用命令选项:
-a:显示完整的命令行
-p:列出对应PID编号

top动态观察程序

Tasks:  63 total,   1 running,  62 sleeping,   0 stopped,   0 zombie  
%Cpu(s):  0.3 us,  0.3 sy,  0.0 ni, 99.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1883724 total,   101444 free,    85704 used,  1696576 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  1612240 avail Mem 
PID USER PR NI VIRT RES SHR S
%CPU %MEM TIME+ COMMAND 26121 root 10 -10 124764 9820 6256 S 0.3 0.5 516:44.65 AliYunDun 1 root 20 0 125148 3388 2132 S 0.0 0.2 2:38.84 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.45 kthreadd 3 root 20 0 0 0 0 S 0.0 0.0 0:27.10 ksoftirqd/0 5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H 7 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0 8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh

top 程式执行的状态列,每个项目的意义为:

PID :每个process 的识别码(PID)
USER:该process 所属的使用者;
PR :Priority 的简写,程序的优先执行顺序,越小越早被执行;
NI :Nice 的简写,与Priority 有关,也是越小越早被执行;
%CPU:CPU 的使用率;
%MEM:内存的使用率;
TIME+:CPU 使用时间的累加;
COMMAND:指令

如果你发现在某个程序的CMD 后面还接上<defunct> 时,就代表该程序是僵尸程序,可以使用kill杀死,例如:

apache 8683 0.0 0.9 83384 9992 ? Z 14:33 0:00 /usr/sbin/httpd <defunct>

kill杀死进程

pgrep命令

pgrep [选项]... 查询条件    #检索进程

常用命令选项:

 -l:输出进程名,而不仅仅是 PID
 -U:检索指定用户的进程
 -t:检索指定终端的进程
 -x:精确匹配完整的进程名

lsof命令 

在终端下输入lsof即可显示系统打开的文件,因为 lsof 需要访问核心内存和各种文件,所以必须以 root 用户的身份运行它才能够充分地发挥其功能。

[root@queen ~]# lsof /root/   
COMMAND     PID USER   FD   TYPE DEVICE SIZE/OFF   NODE NAME
aliyun-se   757 root  cwd    DIR  253,1     4096 131073 /root
bash      17433 root  cwd    DIR  253,1     4096 131073 /root
lsof      17460 root  cwd    DIR  253,1     4096 131073 /root
lsof      17461 root  cwd    DIR  253,1     4096 131073 /root

常用选项参数:

-c 进程 -c 进程 #显示指定进程名现在打开的文件;可以同时列出多个程序的
-p pid1,pid2... #查看指定进程号的进程打开了哪些文件
-i  #列出所有的网络连接
-i[:service|port]  #列出谁在使用某个特定的tcp/udp端口
    service --> /etc/service中的 service name (可以不只一个)
    port --> 端口号 (可以不只一个)
#lsof 文件名   显示打开指定文件的所有进程

原文地址:https://www.cnblogs.com/xujint/p/13141591.html