二十二、进程管理工具

pstree,ps,pgrep

pkill,pidof

top,htop

glance,pmap,

vmstat,dstat

kill,pkill

job,bg,fg,nohup

sar(内存),tsar,iosstat(磁盘IO),iftop(网络接口数据)

 

 

Linux 系统各进程的相关信息均保存在/proc/PID目录下的个文件中,而进程查看的命令都是遍历去读取该目录下的内容

  靠什么命令来启动相应进程的 就在cmdline文件中

 

 

一、pstree显示进程树

二、ps

2.1、BSD风格:

    ps option      

   a 与终端相关的进程

    x 与终端无关的进程

    u 与用户相关的进程

    Z 安全标签(安全上下文)

    o 自定义显示格式

[root@izpo45bh60h6bsz ~]# ps aux 
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
USER: 进程用户
PID: 进程PID
%CPU: 运行占据CPU时间百分比
VSZ:虚拟内存集:可交换出的数据   一般大于RSS
RSS: 常驻内存集:不可交换出的数据
TTY: 通过哪个终端启动  (?代表与终端无关)
STAT:进程状态
    R(Running),S(Interrupt Sleeping),D(uninterrupt Sleeping),T(Stopped),z(zombie)
    +:前台
   l: 多线程进程
N:低优先级
   < :高优先级进程 s 领导进程, START: 进程启动时间 TIME: 进程运行过程占据CPU累积时长 COMMAND: 由什么命令启动的相关进程

 

2.2、System V 风格

  ps option

    -e:相当于 ax
    -f:显示详细信息
   -F:显示完整格式的进程信息
-H hierarchy 层级结构显示
 
   -eFH :以进程层级格式显示进程相关信息
[root@izpo45bh60h6bsz ~]# ps -ef 
UID        PID  PPID  C STIME TTY          TIME CMD
[root@izpo45bh60h6bsz ~]# ps -eF 
UID        PID  PPID  C    SZ   RSS PSR STIME TTY   TIME CMD
自定义显示:
[root@izpo45bh60h6bsz ~]# ps axo pid,ppid,ni,psr,pri,rtprio,time,cmd    PID  PPID  NI PSR PRI RTPRIO     TIME CMD

 

ppid: 父进程id,0代表 天造地设
PRI: priority
PSR: 运行在哪个cpu上
rtprio: realtime priority 实时优先级
C cpu编号 (多个CPU时会显示不同编号)

 

三、pgrep,pkill

  pgrep [option] pattern

  pkill [option] pattern

        -u euid :effective user 有效用户(suid的属主) 

        -U uid  : real user真实用户

        -t terminal 与指定终端相关的进程

        -a 完整格式的进程名

        -l 显示进程名

        -P PPID 显示PPID的子进程列表

 

pidof :根据进程名获取其PID

[root@izpo45bh60h6bsz ~]# pgrep sshd
4472
10829

[root@izpo45bh60h6bsz ~]# pgrep sshd -l
4472 sshd
10829 sshd

[root@izpo45bh60h6bsz ~]# pgrep sshd -a
4472 /usr/sbin/sshd -D
10829 sshd: root@pts/0    

[root@izpo45bh60h6bsz ~]# pgrep -P 4472
10829

[root@izpo45bh60h6bsz ~]# pgrep -t pts/0
10831

[root@izpo45bh60h6bsz ~]# pgrep -t pts/0 -l
10831 bash

[root@izpo45bh60h6bsz ~]# pgrep -t pts/0 -a
10831 -bash

 

四、top命令

top option

    -d #  :刷新时间间隔  默认为3秒

    -b 批次显示

    -n # 显示多少批次 与-b连胜 

排序方式:(在键盘上输入如下命令进行排序)

    P %CPU 占据CPU百分比(过去几秒占据CPU百分比:几秒由刷新定义)

    M %MEM 占据内存百分比

    T TIME  :累计占据CPU时长

首部信息 

  第一行: uptime: 可按“l” 显示或取消该行信息  

top - 11:20:24 up 30 days, 13:20, 2 user, load average: 0.04, 0.03, 0.05  

“11:20:24”为系统当前时刻;
“13:20”为系统启动后到现在的运作时间;
“2 users”为当前登录到系统的用户,
更确切的说是登录到用户的终端数 -- 同一个用户同一时间对系统多个终端的连接将被视为多个用户连接到系统,这里的用户数也将表现为终端的数目;

load average: 0.03, 0.01, 0.05  过去一分钟、五分钟、十五分钟的平均负载

  CPU队列中等待运行的任务的个数,而不是CPU占据百分比

 

    第二行 :tasks: 可按 “t” ---CentOS 6上只有显示或取消,;CentOS 7上以进度条方式显示如图

    第三行:显示每个cpu: 可按“1”

 %Cpu(s):  0.0 us, 0.1 sy, 0.0 ni,99.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st   

%Cpu:cpu占用百分比

0.0 us:用户空间占用的百分比

0.1 sy:内核空间占用时间的百分比

0.0 ni:对nice调整占用的内存百分比

99.9 id:空闲百分比

0.0 wa:等待IO完成所消耗的百分比

0.0 hi:处理硬件中断所占用的百分比

0.0 si:处理软件中断所占用的百分比(模式切换)

0.0 st:被偷走的百分比(虚拟化程序)

 

    第四行:Mem/Swap: 可按 “m”

进程信息 : 

PR 优先级
NI   Nice值
VIRT  相当于VRT  虚拟内存集
RES   相当于RSS  常驻内存集
SHR   shared    共享内存大小
S    STATE      状态

退出top命令 :敲"q"键
修改刷新时间间隔 : 敲“s”键
终止指定进程: 敲“k”键

 

五、htop

注:需要Fedora-EPEL源

yum 包

[Fedora-EPEL]
name=Fedora EPEL for EL6
baseurl=https://mirrors.aliyun.com/epel/6/$basearch
gpgcheck=0

 

选项:

   -d #  :指定延迟时间

  -u UserName : 仅显示指定用户的进程

  -s COLOMN:以指定字段进行排序

 

 

获取帮助:  F1

选定进程后,按如下键

    s: syscall 跟踪选定进程的系统调用

    t :tree ,层级结构显示

    l :显示选定进程打开的文件列表

    a :设置进程和cpu亲源性,进程只能运行在某个cpu上,增加缓存命中率

    F6 > 以指定字段排序

 


 

六、vmstat命令 虚拟内存工具virtual memory state

 

vmstat [delay[count]]

    delay 延迟几秒刷新一次

    count 刷新几次

 

-p partiton

内存信息查看

    vmstat -s  :显示内存的统计数据

    /proc/memoinfo

 

[root@izpo45bh60h6bsz ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 3  0      0 208496  37940 465952    0    0    21     8  107  256  0  0 99  0  0

procs 进程 

  r running 等待队列的进程的个数 

  b block阻塞 --处于不可终端睡眠态的进程个数(被阻塞的队列的长度)

memory 内存

  swpd 交换内存使用的总量

  free 空闲物理内存总量

  buff 内存中buff大小

  cache 内存中cache大小


swap (站在交换内存角度)

  si 从物理内存加载至swap的速率(kb/s)

  so 从swap加载至物理内存的速率


io (站在系统角度)

  bi input 从磁盘加载至内存的速率(kb/s)

  bo output 从内存加载至磁盘的速率


system 系统

  in/int interrupt 中断,每秒多少个中断

  cs   context switch 进程上下文切换次数(保存现场和恢复现场的切换次数)


cpu 

  us user space

  sy system space/kernel space

  id idle

  wa wait 等待IO完成的时间比率

  st stole 被虚拟化技术偷走的比率

 

 七、pmap报告内存映射表

 pmap [-x|-p|-d|-q]  pid   

      -x extend显示扩展格式

      -p 显示映射的完整路径

      -d 显示设备信息

      -q 不显示首尾信息

 

 查看内存映射表

          /proc/PID/maps

          pmap pid

   功能: 线性内存地址和物理地址映射关系

  进程只知道线性地址

    1、进程将打开的文件存储在进程内存地址空间中,分段存储

    2、进程划分的空间为4K的整数倍(内存页的大小为4K)

    3、heap堆、stack栈、anon: anonymous 匿名页---进程自己存储数据的位置,不能交换出去

Address           Kbytes     RSS   Dirty Mode  Mapping
00007ff5a8000000     164      12      12 rw---   [ anon ]
00007ff5a8029000   65372       0       0 -----   [ anon ]
00007ff5ac94d000       4       0       0 -----   [ anon ]
00007ff5ac94e000    8192       8       8 rw---   [ anon ]
00007ff5ad14e000       4       0       0 -----   [ anon ]
00007ff5ad14f000    8192       8       8 rw---   [ anon ]
00007ff5ad94f000      16       8       0 r-x-- libuuid.so.1.3.0
00007ff5ad953000    2044       0       0 ----- libuuid.so.1.3.0
00007ff5adb52000       4       4       4 r---- libuuid.so.1.3.0
00007ff5adb53000       4       4       4 rw--- libuuid.so.1.3.0
00007ff5adb54000     228      40       0 r-x-- libblkid.so.1.1.0
00007ff5adb8d000    2048       0       0 ----- libblkid.so.1.1.0
00007ff5add8d000      12      12      12 r---- libblkid.so.1.1.0
00007ff5add90000       4       4       4 rw--- libblkid.so.1.1.0

 

八、glances命令

    galances [options...] 

         -s -B IPADDR 服务端模式

      IPADDR:指明监听于本机哪个地址

         -c IPADDR   客户端模式

      IPADDR:要连入的服务器端地址

   常用选项:     

            b :以字节Byte为单位显示网络速率

            m/n/d  :控制mount,network,disk模块的显示或隐藏

            t # :延迟间隔

            1 : 每个cpu信息单独显示

        

          -f /path/to/somefile galance:显示的结果保存至文件中

         -o {HTML|CSV} 文件的格式

 

 galance内建命令

   服务端

[root@localhost ~]# glances -s -B 192.168.1.103 -p 8888 -P "1234"
Glances server is running on 192.168.1.103:8888

      客户端

[root@localhost ~]# glances -c 192.168.1.103 -p 8888
Error: Connection to server failed. Bad password.
[root@localhost ~]# glances -c 192.168.1.103 -p 8888 -P "1234"
[root@localhost ~]# 
Connected to 192.168.1.103 | Press 'h' for help

 

九、dstat

重新换回CLI的颜色使用:reset

vmstat替换工具

        dstat options

            -c:显示cpu相关信息

      -C #,#,..,total (指明CPU代表号) 

            -d  :显示disk相关信息

      -D total,/dev/sda,/dev/sdb,...

            -g page显示内存数据交换的速率

            -i  :显示中断速率

            -l, --load   显示平均负载

            -m,--mem   显示内存相关统计数据;

            -n,--net    显示网络相关统计数据;

            -p,--proc       进程状态

            -r,--io       显示io相关的统计数据

            -s,--swap   显示swap 相关的统计数据

            -t,--time        时间输出

            --aio              异步io

            --fs,--filesystem 显示文件系统

            --ipc (message queue(signal),semephores,shared memory)

            --lock 文件锁

            --socket (total,udp,tcp,raw,ip-fragment分片)

            --tcp (listen,established,syn,time_wait,close)

            --udp (listen,active)

            --unix (datagram, stream, listen, active)

----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw 

total-cpu-usage cpu使用状态
dsk/total       磁盘读写速率
net/total       网络的收发速率
paging          页面的换进换出(内存页面,交换内存。 si,so)
system          中断和上下文切换 (int: interrupt, csw: context swtich。 in,cs )

 

使用示例

1、cpu相关的信息

[root@localhost ~]# dstat  -c
----total-cpu-usage----
usr sys idl wai hiq siq

[root@localhost ~]# dstat  -C total,0
Terminal width too small, trimming output.
----total-cpu-usage------------cpu0-usage------ -dsk/total- -net/total- ---paging-->
usr sys idl wai hiq siq:usr sys idl wai hiq siq| read  writ| recv  send|  in   out >

2、硬盘相关

[root@localhost ~]# dstat  -d
-dsk/total-
read  writ  

[root@localhost ~]# dstat  -D total,/dev/sda
----total-cpu-usage---- -dsk/total----dsk/sda-- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read  writ: read  writ| recv  send|  in   out | int   csw

3、页面

[root@localhost ~]# dstat  -g
---paging--

4、显示中断

[root@localhost ~]# dstat  -i
----interrupts---

5、平均负载

[root@localhost ~]# dstat  -l
---load-avg---
 1m   5m  15m

6、内存

[root@localhost ~]# dstat -m
------memory-usage-----
 used  buff  cach  free

7、网络

[root@localhost ~]# dstat -n
-net/total-
 recv  send

8、进程

 ---procs---
run blk new
  run 运行进程的数据
  new 创建新进程的数据

9、io

[root@localhost ~]# dstat -r
--io/total-
 read  writ

10、swap

[root@localhost ~]# dstat -s
----swap---
 used  free

11、时间

[root@localhost ~]# dstat -t
----system----
  date/time

12、异步IO

[root@localhost ~]# dstat --aio
async
 #aio 

13、文件系统

[root@localhost ~]# dstat --fs
--filesystem-
files  inodes

14、进程通信

[root@localhost ~]# dstat --ipc
--sysv-ipc-
msg sem shm

15、文件锁

[root@localhost ~]# dstat --lock
---file-locks--
pos lck rea wri

16、套接字

[root@localhost ~]# dstat --socket
------sockets------
tot tcp udp raw frg

17、tcp连接

[root@localhost ~]# dstat --tcp
----tcp-sockets----
lis act syn tim clo

18、udp连接

[root@localhost ~]# dstat --udp
--udp--
lis act

19、unix连接

[root@localhost ~]# dstat --unix
--unix-sockets-
dgm str lis act 

20、-a

[root@localhost ~]# dstat -a 1 1
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw
 
[root@localhost ~]# dstat  --disk-util
sda-
util

22、文件系统空闲

[root@localhost ~]# dstat  --freespace
-----/----------/shm-------/boot-------/home--------/usr--------/var---
 used  free: used  free: used  free: used  free: used  free: used  free
3101M 44.9G:   0   121M:57.4M  419M: 260M 4534M:2091M 12.3G: 714M 9001M

23、插件注释

[root@localhost ~]# dstat  --helloworld
plugin-title
  counter   
Hello world!
Hello world!
Hello world!
Hello world!

24、显示最占用CPU的进程

[root@izpo45bh60h6bsz ~]# dstat --top-cpu
-most-expensive-
  cpu process   
AliYunDun    0.2
aliyun-servic1.0

25、中断次数最多

[root@izpo45bh60h6bsz ~]# dstat --top-in
---most-frequent----
     interrupt      
ata_piix          1 
virtio0-input.0   1

26、最占用io的进程

[root@izpo45bh60h6bsz ~]# dstat --top-io
----most-expensive----
     i/o process      
systemd      29k   10k
sshd: root@ 146B  196B

27、最占用内存的进程

[root@izpo45bh60h6bsz ~]# dstat --top-mem
--most-expensive-
  memory process 
mysqld       123M

28、延迟最大的进程

[root@izpo45bh60h6bsz ~]# dstat  --top-latency
--highest-total--
 latency process 
rcu_sched     882

 

十、kill--想进程发送控制信号,以实现对进程管理

 

kill命令

    显示当前系统可用信号信号:kill -l

        man 7 signal

 

1)SIGHUP:   不关闭进程重读配置文件。服务程序

2)SIGINT:   终止信号(interrupt) 相当于 Ctrl + c

9)SIGKILL:  杀死正在运行的进程   ,直接终止,

15)SIGTERM:  终止指定的进程(优雅) ,处理的数据存回磁盘中,再终止 

 

18)SIGCONT 让停止态的信号,continue

19)SIGSTOP 让运行中的进程,stop

 

 使用发信号的方法 SIGNAL:

        1、信号完整名称 : SIGHUP

        2、信号的简写名称: HUP

        3、信号的数字标识 :1,2,9

 

向进程发信号:

          kill -SIGNAL pid

终止“名称”之下的所有进程

          killall -SIGNAL 进程名

 

十一、linux的作业控制

 

 jobs一个任务可能包含单个进程也可能包含多个进程

    

    前台作业:与终端相关,占据命令提示符

    后台作业:与终端相关,但启动后即转入后台运行(不占据命令提示符)

 

 送到后台剥离与终端关系: # nohup  COMMMAND  &

 

    作业送到后台:

          运行中的程序:Ctrl + z

          尚未启动的程序:COMMAND &

 注:此类作业虽然被送往后台运行,但其依然与终端相关:如果希望送往后台,剥离与终端的关系

    

 查看所有作业情况: # jobs

          + 没有作业号,默认管理的作业

          - 下一个

          [#]作业号

 

    作业管理控制

        送到前台: fg [[%]JOB_NUM]

        送到后台: bg [[%]JOB_NUM]

        终止作业: kill -SIGNAL [%JOBNUM]

 

十二、nice值

    动态优先级:进程消耗过多的cpu资源时,内核自动调整,

    静态优先级: 100-139 (数据越小,优先级越高)

     实时优先级: 0-99 (数字越大,优先级越高)

 

进程默认启动优先级120,nice值为 0

    nice [-n # ] command

        -n # 启动后以#值作为Nice值运行,不给-n #,默认nice=10

 

对已经运行的进程做优先级调整

 renice -n #  pid(相应command的进程号)

        -n # 重新设置优先级

    查看nice值: # ps axo pid,command,ni

 


 

补充、sar,tsar,iosar,iftop

 

sar 

    -u cpu

    -d disk

    -B 交换页数据

    -b 报告I\O传输速率

 

详解:-B

pgpgin/s pgpgout/s   fault/s  majflt/s  pgfree/s pgscank/s pgscand/s pgsteal/s   

pgpgin/s  物理内存到磁盘swap

fault 缺页异常发生的速率

majflt/s  major faults 

pgfree/s  page free place on

pgscank/s kswapd daemon scan pages

pgscnd/s  page scan directly

pgsteal/s page reclaimed from cache(pagecache and swap-cache)  

 

详解: -u 报告cpu使用率

 CPU     %user     %nice   %system   %iowait    %steal     %idle

 

详解: -b  

tps      rtps      wtps   bread/s   bwrtn/s

t 总传输

rtps 读传输

wtps 写传输

bread/s  从块读

bwrtn/s  写到块

 

tsar

 

iostat

 

Report Central Processing Unit (CPU) statistics and input/output statistics

       for devices and partitions.

 Central Processing Unit (CPU) 中央处理单元cpu

 statistics 统计数据

 for prep.为,为了;倾向于;关于;当作

    为设备和分区报告CPU,I/O统计数据

 

    iostat [-u | -d | -h | -k | -m]

        -u cpu

        -d disk

        -h human readable

        -k KB

        -m MB

        -N LVM2统计数据

 

CPU Utilization Report(Utilization 利用率)

 %user 运行用户级别/用户空间的进程CPU利用率百分比

 %nice nice priority占据CPU利用百分比

 %system system level(kernel)

 %iowait 系统有突出IO时,CPU空闲百分比。进程等待IO的百分比

 %steal 被虚拟化技术偷走的时间

 %idle CPU空闲和系统无IO所占时间百分比

 

Device Utilization Report

  Device 显示dev目录下的设备或Partition名

  tps 显示每秒IO请求传输至设备的数量,IO请求可以是单个,或多个IO请求组合成单个,大小不确定

kB_read/s     每秒从块或扇区读取数据量

kB_wrtn/s     每秒写

kB_read      总读

kB_wrtn      总写

rrqm/s      queued to device read request merged 合并读请求队列的速率

 

wrqm/s      合并写请求速率

 

iftop

 

1)获取命令的信息 命令行模式显示网络接口带宽统计数据“为什么我的ADSL连接如此慢”

[root@izpo45bh60h6bsz ~]# dnf info iftop
Using metadata from Wed Aug 23 00:36:04 2017
可安装的软件包
名称        : iftop
架构        : x86_64
时期        : 0
版本        : 1.0
发布        : 0.14.pre4.el7
大小        : 52 k
仓库        : epel
概要        : Command line tool that displays bandwidth usage on an interface
URL         : http://www.ex-parrot.com/~pdw/iftop/
协议        : GPLv2+
描述        : iftop does for network usage what top(1) does for CPU usage. It listens to
            : network traffic on a named interface and displays a table of current bandwidth
            : usage by pairs of hosts. Handy for answering the question "why is our ADSL link
            : so slow?".
 

2)安装包

[root@izpo45bh60h6bsz ~]# dnf install iftop
 

3)获取帮助

# man iftop 显示主机接口之上的网络带宽使用情况

 iftop -h | [-nNpblBP] [-i interface] [-f filter code] [-F net/mask] [-G net6/mask6]

默认情况会反解主机名,-n选项或运行中使用r命令关闭dns反解

默认会显示通过过滤器的所有IP包,IP包的方向是通过接口的方向

-F NETWORK 显示给定网络输入或输出的数据包 

 

忽略广播数据包: not ether host  ff:ff:ff:ff:ff:ff

过滤仅显示web数据包,排除:port http and not host webcache.example.com

用户浪费了多少带宽弄清楚网络如此慢:icmp

 

    -h 获取帮助

    -n 不从IP包中反解主机名

    -N 不反解端口号

    -p promise模式,流量不经过此接口也会统计

    -P 打开端口显示

    -b bar开关

    -m #[km] 仅显示由#指定的宽带比例上限对应的数据包

    -i IFACE 指监听接口

    -f filter code 过滤

    -F net/mask 过滤仅显示什么ip的数据包,包的方向由网络边界决定

    -c config_file 给出一个临时配置文件,默认 ~/.iftoprc

    

    

内建命令

S ,D , P ,p ,n ,N

Host display:                          General:
 n - toggle DNS host resolution         P - pause display
 s - toggle show source host            h - toggle this help display
 d - toggle show destination host       b - toggle bar graph display
 t - (revice,sent,two line,one line)            B - cycle bar graph average
                                        T - toggle cumulative line totals
Port display:                           j/k - scroll display
 N - toggle service resolution          f - edit filter code
 S - toggle show source port            l - set screen filter
 D - toggle show destination port       L - lin/log scales
 p - toggle port display                ! - shell command
                                        q - quit
Sorting:
 1/2/3 - sort by 1st/2nd/3rd column
 < - sort by source name
 > - sort by dest name
 o - freeze current order
 

  

显示注释

每个字段10秒平均流量显示

foo.example.com  =>  bar.example.com      1Kb  500b   100b
流量从 foo.example.com 到 bar.example.com
1Kb 前2秒数据被接收或发送的速率
500b 前10秒
100b 前40秒


过滤后的总传输流量
最近40s高峰流量
过去2s,10s,40s部传输速率

 

posted @ 2019-08-25 21:35  幻落之瞳  阅读(572)  评论(0编辑  收藏  举报