1、pstree命令:显示进程树

[root@localhost ~]# pstree
init─┬─auditd───{auditd}
     ├─crond
     ├─dbus-daemon───{dbus-daemon}
     ├─httpd───3*[httpd───26*[{httpd}]]
     ├─master─┬─pickup
     │       
                 └─qmgr
     ├─6*[mingetty]
     ├─mysqld_safe───mysqld───20*[{mysqld}]
     ├─rsyslogd───3*[{rsyslogd}]
     ├─sshd───sshd───bash───pstree
     └─udevd───2*[udevd]

# Linux系统各进程的相关信息均保存在/proc/PID目录下的各文件中

wKiom1YKWUnBy1zLAAM2yODunIY113.jpg

 

2ps命令:显示进程的当前状态

命令格式:ps [ OPTION ] ...

1)常用组合:aux

a: 与终端相关的进程;

u: 以用户为中心组织进程状态信息显示

x: 与终端无关的进程;

[root@localhost ~]# ps
aux | head -8
USER        PID %CPU %MEM    VSZ  RSS TTY      STAT START   TIME COMMAND
root          1 0.1  0.0  19232 1512 ?        Ss   07:32  0:01 /sbin/init
root          2 0.0  0.0      0    0 ?        S    07:32  0:00 [kthreadd]
root          3 0.0  0.0      0    0 ?        S    07:32  0:00 [migration/0]
root          4 0.0  0.0      0    0 ?        S    07:32  0:00 [ksoftirqd/0]
root          5 0.0  0.0      0    0 ?        S    07:32  0:00 [stopper/0]
root          6 0.0  0.0      0    0 ?        S    07:32  0:00 [watchdog/0]
root          7 0.0  0.0      0    0 ?        S    07:32  0:00 [migration/1]

各字段解析:

VSZ: Virtual memory SiZe,虚拟内存集

RSS: ReSident Size, 常驻内存集

STAT:进程状态

R:running,运行中

S: interruptable sleeping,可中断睡眠

D: uninterruptable sleeping,不可中断睡眠

T: stopped,停止状态

Z: zombie,僵尸状态

 

+: 前台进程

l: 多线程进程

N:低优先级进程

<: 高优先级进程

s: session leader

 

2)常用组合:-ef

-e: 显示所有进程

-f: 显示完整格式程序信息

 

3)常用组合:-eFH

-F: 显示完整格式的进程信息

-H: 以进程层级格式显示进程相关信息

       ni: nice值

       pri: priority,优先级

       psr: processor, CPU

       rtprio: 实时优先级

 

3、pgrep, pkill

   pgrep [options] pattern:根据进程相关属性查找进程

   pkill [options] pattern:发送信号(signal)到指定进程

     options:         

  -u uid: effective user

      -U uid: real user

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

      -l: 显示进程名

      -a: 显示完整格式的进程名

      -P pid: 显示其父进程为此处指定的进程的进程列表

 

4、pidof: 根据进程名获取其PID

[root@localhost ~]# pidof httpd
1455 1454 1453 1411

5、top and htop  :显示进程相关信息

1top命令:

     排序:

       P:以占据的CPU百分比;

       M:占据内存百分比;

       T:累积占据CPU时长;

 

    首部信息显示

       uptime信息:l命令

       tasks及cpu信息:t命令

       cpu分别显示:1 (数字)

       memory信息:m命令

 

   退出命令:q

   修改刷新时间间隔:s

   终止指定进程:k

 

    选项:

       -d #: 指定刷新时间间隔,默认为3秒;

       -b: 以批次方式;

       -n #: 显示多少批次;

[root@localhost ~]# top -d 3 -b -n 2

 

2)htop命令:

    选项:

        d #: 指定延迟时间;

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

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

    命令:

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

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

  a:将选定的进程绑定至某指定CPU核心;

  t: 显示进程树

 

wKiom1YKWj3B3QasAAgUBYNSE2E243.jpg

 

6、vmstat命令:虚拟内存状态信息显示

命令格式:vmstat [options] [delay [count]]

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

        

各字段解析:

procs:

r:等待运行的进程的个数;

b:处于不可中断睡眠态的进程个数;(被阻塞的队列的长度);

memory:

swpd: 交换内存的使用总量;

free:空闲物理内存总量;

buffer:用于buffer的内存总量;

cache:用于cache的内存总量;

swap:

si:数据进入swap中的数据速率(kb/s)

so:数据离开swap中的数据速率(kb/s)

io:

bi:从块设备读入数据到系统的速率;(kb/s)

bo: 保存数据至块设备的速率;

system:

in: interrupts, 中断速率;

cs: context switch, 进程切换速率;

cpu:

us:用户空间所占CPU使用时间比例

sy:内核空间所占比例

id:空闲时间所占比例

wa:等待IO时间所占比例

st:虚拟机偷盗CPU时间所占比例

 

7glances命令

glances [-bdehmnrsvyz1] [-B bind] [-c server] [-C conffile] [-p port] [-P password] [--password]

 [-t refresh] [-f file] [-o output]

 

内建命令:

a  Sort processes automatically     l  Show/hide logs

c  Sort processes by CPU%           b  Bytes or bits for network I/O

m  Sort processes by MEM%           w  Delete warning logs

p  Sort processes by name           x  Delete warning and critical logs

i  Sort processes by I/O rate       1  Global CPU or per-CPU stats

d  Show/hide disk I/O stats         h  Show/hide this help screen

f  Show/hide file system stats      t  View network I/O as combination

n  Show/hide network stats          u  View cumulative network I/O

s  Show/hide sensors stats          q  Quit (Esc and Ctrl-C also work)

y  Show/hide hddtemp stats

 

常用选项:

-b: 以Byte为单位显示网卡数据速率;

-d: 关闭磁盘I/O模块;

-f /path/to/somefile: 设定输入文件位置;

-o {HTML|CSV}:输出格式;

-m: 禁用mount模块

-n: 禁用网络模块

-t #: 延迟时间间隔

-1:每个CPU的相关数据单独显示;

 

C/S模式下运行glances命令:

服务模式:

glances -s -B IPADDR(IPADDR: 指明监听于本机哪个地址)

 

客户端模式:

glances -c IPADDR(IPADDR:要连入的服务器端地址)

 

wKioL1YKWpDT3r1AAAYbuMGeN-g363.jpg

 

8dstat命令:生成系统资源统计信息工具

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

      options:-c: 显示cpu相关信息;

            -C #,#,...,total

-d: 显示disk相关信息;

-D total,sda,sdb,...

-g:显示page相关统计数据;

-m: 显示memory相关统计数据;

-n: 显示network相关统计数据;

-p: 显示process相关统计数据;

-r: 显示io请求相关的统计数据;

-s: 显示swapped相关的统计数据;

 

--tcp:显示tcp连接状态

(listen, established, syn, time_wait, close)

--udp:显示udp连接状态信息

--unix:unix域套接字状态信息

--raw:raw套接字状态信息

--socket:套接字状态信息

--ipc:ipc状态信息

 

--top-cpu:显示最占用CPU的进程;

--top-io: 显示最占用io的进程;

--top-mem: 显示最占用内存的进程;

--top-lantency: 显示延迟最大的进程;

    例:延时为2,显示5次

wKiom1YKWrmyxNwhAAFg9BjRn2k566.jpg

 

9sar:收集报告或保存系统活动信息

命令格式:sar [options] [-A] [ -o [ filename ]] t [n]

t:采样间隔

n:采样次数,默认值是1;

-o filename :将命令结果以二进制格式保存在文件中。

options :

-A:所有报告的总和

-u:输出CPU使用情况的统计信息

-v:输出inode、文件和其他内核表的统计信息

-d:输出每一个块设备的活动信息

-r:输出内存和交换空间的统计信息

-b:显示I/O和传送速率的统计信息

-a:文件读写情况

-c:输出进程统计信息,每秒创建的进程数

-R:输出内存页面的统计信息

-y:终端设备活动情况

-w:输出系统交换活动信息

 

[root@localhost ~]# sar-u -o sar.txt 2 3 Linux
2.6.32-504.el6.x86_64 (localhost.localdomain)  09/26/2015  _x86_64_  (1 CPU)
 
11:28:25 PM     CPU    %user     %nice   %system  %iowait    %steal     %idle
11:28:27 PM     all     0.50      0.00      1.98     0.99      0.00     96.53
11:28:29 PM     all     0.00      0.00      1.51     1.51      0.00     96.98
11:28:31 PM     all     0.00      0.00      1.50     1.50      0.00     97.00
Average:        all     0.17      0.00      1.66     1.33      0.00     96.84

 

[root@localhost ~]# sar -r 2 3 Linux
2.6.32-504.el6.x86_64 (localhost.localdomain) 09/26/2015  _x86_64_   (1 CPU)
 
11:29:54 PM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit
11:29:56 PM   1597996   308496     16.18     20496   162756     91560      3.10
11:29:58 PM   1597872   308620     16.19     20496   162756     91560      3.10
11:30:00 PM   1597872   308620     16.19     20496   162756     91560      3.10
Average:      1597913   308579     16.19     20496   162756     91560      3.10
[root@localhost ~]# sar -d -p 2 1 Linux
2.6.32-504.el6.x86_64 (localhost.localdomain)   09/26/2015  _x86_64_  (1 CPU)
 
11:34:28 PM    DEV  tps  rd_sec/s  wr_sec/s avgrq-sz  avgqu-sz  await   svctm  %util
11:34:30 PM    sda  0.00  0.00    0.00      0.00      0.00      0.00    0.00   0.00
11:34:30 PM    sdb  0.00  0.00    0.00      0.00      0.00      0.00    0.00   0.00
11:34:30 PM    sr0  0.00  0.00    0.00      0.00      0.00      0.00    0.00   0.00
 
Average:       DEV  tps  rd_sec/s  wr_sec/s avgrq-sz  avgqu-sz  await   svctm  %util
Average:       sda  0.00  0.00    0.00      0.00      0.00      0.00    0.00   0.00
Average:       sdb  0.00  0.00    0.00      0.00      0.00      0.00    0.00   0.00
Average:       sr0  0.00  0.00    0.00      0.00      0.00      0.00    0.00   0.00

常用选项:

查看CPU: sar -u、 sar -q

查看内存:sar -B、sar -r、sar -W

查看I/O: sar -b、sar -u、sar -d -p

  

10kill命令:向进程发送控制信号,以实现对进程管理

显示当前系统可用信号:

# kill -l

# man 7 signal

 

常用信号:

1) SIGHUP: 无须关闭进程而让其重读配置文件;

2) SIGINT: 中止正在运行的进程;相当于Ctrl+c;

9) SIGKILL: 杀死正在运行的进程;

15) SIGTERM:终止正在运行的进程;

18) SIGCONT:

19) SIGSTOP:

 

指定信号的方法:

(1) 信号的数字标识;1, 2, 9

(2) 信号完整名称;SIGHUP

(3) 信号的简写名称;HUP

 

向进程发信号:

kill [-SIGNAL] PID...

 

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

killall [-SIGNAL] Program

 

11nice and renice:进程优先级调整

静态优先级:100-139

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

nice命令:

nice [OPTION] [COMMAND [ARG]...]

renice命令:

renice [-n] priority pid...

查看:

ps axo pid,comm,ni

[root@centos7 ~]# nice -n 5 httpd
[root@centos7 ~]# ps -axo pid,comm,ni | grep httpd
  6760 httpd             5
  6762 httpd             5
  6763 httpd             5
  6764 httpd             5
[root@centos7 ~]# renice -n 0 `pidof httpd`
6760 (process ID) old priority 5, new priority 0
6762 (process ID) old priority 5, new priority 0
6763 (process ID) old priority 5, new priority 0
6764 (process ID) old priority 5, new priority 0

 

12Linux的作业控制

前台作业:通过终端启动,且启动后一直占据终端;

后台作业:可以通过终端启动,但启动后即转入后台运行(释放终端);

 

让作业工作与后台

(1) 运行中的作业

Ctrl+z

(2) 尚未启动的作业

# COMMAND &

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

# nohup COMMAND &

查看所有作业:

# jobs

 

作业控制:

# fg [[%]JOB_NUM]:把指定的后台作业调回前台;

# bg [[%]JOB_NUM]:让送往后台的作业在后台继续运行;

# kill [%JOB_NUM]:终止指定的作业,必须带%