进程相关命令的使用

ps, top, htop,  vmstat, dstat,pstree,pidof, pgrep


在htop默认没有添加字段的情况下。


ps top htop
常驻内存 rss,  rsz,  rssize

线性内存 vsz,  vsize VIRT VIRT
进程占用CPU %cpu %CPU CPU%
进程状态 state,  S S S
物理内存使用
%mem,RES MEM%,  RES
共享内享
SHR SHR
进程已使用CPU时长 time,  cputime TIME+ TIME+
进程优先级
PR PR
nice值
NI NI


ps

详细信息请看这里:http://www-01.ibm.com/support/knowledgecenter/ssw_aix_71/com.ibm.aix.cmds4/ps.htm?lang=zh


通过/proc/PID/(内核中进程状态信息)统计的各种信息;
report a snapshot of the current processes.
ps [options]:
    选项有三种风格:
        1   UNIX options, which may be grouped and must be preceded by a dash. 带-

        2   BSD options, which may be grouped and must not be used with a dash. 不带-

        3   GNU long options, which are preceded by two dashes. 长格式--


启动进程的方式:
        系统启动过程中自动启动:与终端无关的进程;
        用户通过终端启动:与终端相关的进程;


第一种风格:
选项:
        a:所有与终端相关的进程;
        x:所有与终端无关的进程;
        u:以用户为中心组织进程状态信息显示;

常用组合之一:aux

[root@localhost yum.repos.d]# ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.6  58848  6800 ?        Ss   11:04   0:04 /usr/lib/systemd/systemd --switched-root 
root          2  0.0  0.0      0     0 ?        S    11:04   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    11:04   0:04 [ksoftirqd/0]
.....
root       1184  0.0  0.2  84584  2252 ?        Ss   11:05   0:00 login -- root
root       4066  0.0  0.3  82488  3588 ?        Ss   21:07   0:00 /usr/sbin/sshd -D

带中括号的都是内核级进程,不带的是用户空间程序。

PID: 进程ID。

%CPU: 所占CPU。

%MEM: 所占内存。

VSZ:Virtual Memory Size 虚拟内存集,又称线性内存空间,相当于是top中的VIRT。 单位kb。
RSS:Resident Size,常驻内存集;不能被交换到swap中的数据所占大小。

STAT:
       R:running,运行状态。
       S:interruptable sleeping,可中断睡眠,等待某些条件为真。

       D:uninterruptable sleeping,不可中断睡眠

       T:Stopped,暂停状态,用户可唤醒。如ctrl+z的进程。
       Z:zombie,程序执行完毕已终止,而父进程还没有来得及回收的这段时间。

       +:前台进程
        l:多线程进程
        N:低优先级进程
        <:高优先级进程
         s:session leader 会话主进程               

START: 进程启动时的时间

TIME:进程占用CPU的时间,也就是已运行时间。


第二种风格:

        -e:显示所有进程
        -f:显示完整格式的进程信息     
常用组合之二:-ef

[root@localhost yum.repos.d]# ps -ef
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 11:04 ?        00:00:04 /usr/lib/systemd/systemd --switched-root --system --deser
root          2      0  0 11:04 ?        00:00:00 [kthreadd]
root      11705   4234 98 22:05 pts/1    00:00:48 dd if=/dev/zero of=/dev/null

PPID: 父进程ID.

C: cpu utilization CPU使用率

STIME: 进程启动时的时间

TTY: 终端

TIME: 进程运行时长,占用CPU时长。



常用组合之三:-eFH

        -F:显示额外信息;
        -H:以层级结构显示进程的相关信息;

[root@localhost grub2]# ps -eFH | grep -E '(sshd|PPID)' 
UID         PID   PPID  C    SZ   RSS PSR STIME TTY          TIME CMD
root       1149      1  0 20622  3612   0 17:39 ?        00:00:00   /usr/sbin/sshd -D
root      13397   1149  0 33837  4936   1 20:11 ?        00:00:00     sshd: root@pts/7
root      13398   1149  0 33837  4928   0 20:11 ?        00:00:02     sshd: root@pts/5
root      13917  13410  0 28160   972   1 23:14 pts/5    00:00:00         grep --color=auto -E (sshd|PPID)
root      13399   1149  0 33803  4936   1 20:11 ?        00:00:00     sshd: root@pts/4
root      13403   1149  0 33837  4932   1 20:11 ?        00:00:01     sshd: root@pts/6

SZ: 进程的核心映像大小

RSS: 常驻内存。

PSR:运行于哪颗CPU之上


常用组合之四:-eo, axo

-o:自定义显示的字段,以逗号分隔

字段的名称可以在man ps的STANDARD FORMAT SPECIFIERS段中找到。


常用的field:pid, ni, priority, psr, pcpu, stat, comm, tty, ppid, rtprio
ni:nice值;
priority:priority, 优先级;
rtprio:real time priority,实时优先级;

pcpu表示%cpu。pmem表示%mem

[root@localhost grub2]# ps axo pid,ppid,%cpu,%mem,stat,priority,rtprio,ni,psr,command | grep -E "(sshd|PID.*PPID)" 
   PID   PPID %CPU %MEM STAT PRI RTPRIO  NI PSR COMMAND
  1149      1  0.0  0.3 Ss    20      -   0   0 /usr/sbin/sshd -D
 13397   1149  0.0  0.4 Ss    20      -   0   1 sshd: root@pts/7
 13398   1149  0.0  0.4 Ss    20      -   0   1 sshd: root@pts/5
 13399   1149  0.0  0.4 Ss    20      -   0   1 sshd: root@pts/4
 13403   1149  0.0  0.4 Ss    20      -   0   1 sshd: root@pts/6
 13921  13410  0.0  0.0 S+    20      -   0   1 grep --color=auto -E (sshd|PID.*PPID)

 

cpu百分比: %cpu,pcpu,C

内存百分比:%mem,pmem

nice值:ni,nice

常驻内存:rss,rsz,rssize

用户ID:uid,euid

用户:uname,user,euser.

虚拟内存/线性内存:vsz,vsize

进程占用CPU时间:time,cputime

进程状态:state,S



top
                - display Linux processes

wKiom1aGLhKwf5J3AACn_yJSHZo256.jpg


第一行:当前时间,系统已运行时间, 登录用户, 最近1分钟,5分钟,15分钟的负载(等待CPU的进程队列)。

第二行:进程总数,正在运行的,睡眠的,暂停的,僵死的。

第三行:用户空间cpu占用,系统空间CPU占用,nice调整过的,空闲百分比,等待I/O的,硬中断,软中断,被偷有的(虚拟化占用的)

第四行:总内存,空闲的,使用的,buff/cache占用的。

第五行:总swap,空闲的swap,使用的swap。可分配物理内存

PR: 优先级

NI: NICE值

VIRT: 线性地址空间

RES:物理内存使用

SHR: 共享内存使用(共享库类占用)

S: 状态

 

排序:
P:以占据CPU百分比排序;
M:以占据内存百分比排序;
T:累积占用CPU时间排序;
                   
首部信息:
uptime信息:l命令
tasks及cpu信息:t命令
内存信息:m命令
                    
退出命令:q
修改刷新时间间隔:s
终止指定的进程:k
               
选项:
-d #:指定刷新时间间隔,默认为3秒;
-b:以批次方式显示;
-n #:显示多少批次;
               
           

uptime

显示系统时间、运行时长及平均负载;过去1分钟、5分钟和15分钟的平均负载;等待运行的进程队列的长度;

 

htop

选项:
-d #:指定延迟时间间隔;
-u UserName:仅显示指定用户的进程;
-s COLUME:以指定字段进行排序;
子命令:
l:显示选定的进程打开的文件列表;
s:跟踪选定的进程的系统调用;
t:以层级关系显示各进程状态;
a:将选定的进程绑定至某指定的CPU核心;

u 选择指定用户的进程
# 可以直接按数字来指定到进程。

wKiom1aGLoeSwtIEAAEhC67t4es799.jpg

进程部分默认不显示kernel进程,所以与top的不一样。其它字段意义一样。

F2可以调整各显示。F3搜索,F4过滤。

wKioL1aGLsqw2L5dAAFGQ0wOI7w763.jpg

PRI: 优先级

VIRT: 占用的虚拟内存(线性内存)

RES: 物理内存占用

SHR: 共享内存占用

S: 状态


vmstat
       -s 内存统计信息

wKiom1aGLtTzkWmLAABUSS1VXec555.jpg

r 运行或等待CPU时间片的进程个数
b 被阻塞(通常为等待IO完成)的进程队列的长度     

swpd  从物理内存交换至swap中的数据量,是已占用的空间。 而不是速率。
free  空闲的物理内存


buffer  buffer大小,通常与缓存写操作有关
cache   cache大小, 通常缓存的都是page页面文件 与缓存读操作有关。
       

si : swap in 数据进入swap中的数据量, 通常是速率,kb/s
so : swap out 数据离开swap的数据量。


bi : block in 从块设备读入内存的数据量,速率kb/s
bo : block out 保存至块设备的数据量, 速率kb/s


in : interrupts  中断, 每秒中断数
cs : context switch, 上下文切换,也就是进程切换, 每秒切换次数。


上下文切换 几百上千还是正常的。  上万就表示CPU弱,任务多。
软中断一般是指系统调用,从用户空间切换到内核空间。 不是指上下文切换。
任何从用户模式转到内核模式的都是通过软中断的方式进行的。
任何硬件级别的一些事件的通知是通过硬中断进行的。

在网络服务器上,中断是比较高的。
任何一个网络数据报到达主机时,都会发生一个硬中断。
任何一个磁盘I/O发生时,也会发生硬中断。


us: 用户空间占用

sy: 内核空间占用

id: 空闲

wa: 等待I/O的进程占用

st: 被偷有的(虚拟化占用)



dstat
- versatile tool for generating system resource statistics

wKiom1aGMTPj4J1fAABQU3CCwcg241.jpg

dstat [-afv] [options..] [delay [count]]

常用选项:
-c, --cpu:显示cpu相关信息;
-C #,#,...,total,包含的CPU
-d, --disk:显示磁盘的相关信息
-D sda,sdb,...,tobal 包含的磁盘
-g:显示page相关的速率数据;
-m:Memory的相关统计数据
-n:Interface的相关统计数据;
-p:显示process的相关统计数据;
-r:显示io请求的相关的统计数据;
-s:显示swapped的相关统计数据;

--tcp
--udp
--raw
--socket

--ipc 


--top-cpu:显示最占用CPU的进程;
--top-io:最占用io的进程;
--top-mem:最占用内存的进程;
--top-lantency:延迟最大的进程;


pstree
            pstree  - display a tree of processes

[root@localhost test]# pstree
systemd─┬─NetworkManager─┬─2*[dhclient]
        │                └─3*[{NetworkManager}]
        ├─abrt-watch-log
        ├─abrtd
        ├─agetty
        ├─alsactl
        ├─atd
        ├─auditd─┬─audispd─┬─sedispatch
        │        │         └─{audispd}
        │        └─{auditd}
        ├─chronyd
        ├─dbus-daemon───{dbus-daemon}
        ├─irqbalance
        ├─lsmd
        ├─lvmetad
        ├─master─┬─bounce
        │        ├─pickup
        │        ├─qmgr
        │        └─smtp
        ├─polkitd───5*[{polkitd}]
        ├─rsyslogd───2*[{rsyslogd}]
        ├─smartd
        ├─sshd─┬─sshd───bash───pstree
        │      ├─sshd───bash───man───less
        │      └─sshd───bash
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-udevd
        └─tuned───4*[{tuned}]
[root@localhost test]#


pidof

        pidof -- find the process ID of a running program.

[root@localhost test]# pidof crond sshd
1179 3211 3125 2937 1168
[root@localhost test]# pidof -s crond sshd
1179 3211
[root@localhost test]#

pgrep,pkill

look up or signal processes based on name and other attributes

可以通符查找进程。下边的less是因为在一个ssh终端中执行man。

[root@localhost test]# pgrep ssh* -a
1168 /usr/sbin/sshd -D
2937 sshd: root@pts/1    
3125 sshd: root@pts/0    
3211 sshd: root@pts/2    
3810 less -s
[root@localhost test]#
[root@localhost test]# pkill sshd

pgrep [options] pattern
-u uid:effective user
-U uid:read user
-t  TERMINAL:与指定的终端相关的进程;
-l:显示进程名;
-a:显示完整格式的进程名;
-P pid:显示此进程的子进程;

j_0022.gif我是来打酱油的,有问题还请指出。谢谢了。j_0075.gif

你可能感兴趣的:(top,PS,查看进程,htop)