概述:

   本篇是上篇进程及作业管理(一)http://1992tao.blog.51cto.com/11606804/1851196的后续内容,将继续介绍进程相关的管理工具!

=============================================================================

进程查看及管理工具

 1.uptime命令

uptime命令:

  • 显示当前时间,系统已启动的时间、当前上线人数,系统平均负载(1、5、10分钟的平均负载,一般不会超过1);

  • 系统平均负载:指在特定时间间隔内运行队列中的平均进程数;

  • 如果每个CPU内核的当前活动进程数不大于3的话,那么系统的性能良好。如果每个CPU内核的任务数大于5,那么这台机器的性能有严重问题;

  • 如果linux主机是1个双核CPU的话,当Load Average 为6的时候说明机器已经被充分使用了。

演示:

[root@centos7 ~]# uptime
 22:22:11 up 13:54,  2 users,  load average: 0.00, 0.01, 0.05

 2.top命令

top命令:- display Linux processes

  • 相对于ps而言,ps显示的是某个时间点的进程状态信息,然而在实际的运用当中,我们可能需要动态持续监控进程的运行状态,top命令就可以实现这一功能。

进程及作业管理(二)_作业管理


命令及选项:

排序命令:

  • P:以占据cpu百分比排序;

  • M:以占据内存百分比排序;

  • T:累计占用cpu时间排序

首部信息命令:

  • uptime信息:l 命令 是否显示;

  • tasks及cpu:t 命令 是否显示;

  • 内存信息:  m 命令 是否显示;

相关操作命令:

  • 退出命令:    q

  • 刷新时间间隔:s

  • 终止指定进程:k

选项:

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

  • -n #:批次方式显示,显示多少批次;

  • -b :batch,以批次显示;

每一行代表的含义如下:

第一行:uptime 信息

  1. 系统当前的时间,即:22:29:39

  2. 系统启动到现在所经过的时间,即:up 14:02

  3. 当前已登录系统的用户数,即:2 users

  4. 系统在1,5,15分钟的平均负载,值越小表示系统越空闲,如果高于1,就需要注意当前系统负载过高。

第二行:

  • 显示的是目前进程的总量与个别程序在什么状态(running,sleeping,stopped,zombie),需要注意的是最后的zmobie值,如果不是0就要查看下哪个进程处于僵死状态;

第三行:

显示的是cpu的整体负载,如果说是多核心的cpu,可以按下数字1来切换成不同cpu的负载率;

  • us:user space用户运行程序占用CPU的百分比;

  • sy:system (kernel space)用于运行内核占用CPU百分比;

  • ni:nice用户进程空间所改变优先级的进程占用CPU的百分比;

  • id:idle空闲CPU百分比;

  • wa:wait io 等待I/O花费时间;

  • hi:hardware interrupt 硬件中断占用CPU百分比;

  • si:software interrupt 软件中断占用CPU百分比;

  • st:stolen,被虚拟机“偷走”的百分比;

第四行:

  • 表示物理内存的使用情况;

第五行:

  • 表示交换分区的使用情况;

第六行:

  这里默认是空白显示,当在top程序当中输入命令时,显示状态的地方,这里可以输入的命令有:

  • P:以占据CPU百分比大小排序;

  • M:以占据Memory空间大小排序;

  • T:CPU累计占用时间排序;

  • l:是否显示系统负载行;

  • t:是否显示进程摘要信息及CPU负载状态;

  • 1:这里是数字1,平均或单独显示CPU的负载状态;

  • m:是否显示内存相关的状态信息;

  • q:退出命令;

  • s:修改延迟时长;

  • k:终止指定进程;

top命令行代表含义:

  • PID:每个进程ID;

  • USER:进程所属的使用者;

  • PR:Priority的简写,进程的优先级,越小优先级越高;

  • NI:Nice的简写,与Priority有关,也是越小越早被运行;

  • VIRT:进程需要的虚拟内存大小,而非使用的虚拟内存大小;

  • RES:进程当前使用的内存大小,不包括swap;

  • SHR:进程与其他进程共享的内存大小,可通过RES-SHR来计算进程所占用的物理内存;

  • S:   进程状态;

  • %CPU:CPU的使用率;

  •  %MEM:物理内存是使用率;

  • TIME+:CPU使用时间的累加

 3.htop命令

htop命令:

  • 除了top命令外,还有一个top的增强版命令htop,系统默认情况下没有安装,需要epel源来进行安装;(在工作中epel源,直接指定阿里云,网易或者搜狐的镜像网站即可)

选项:

  • -d #:指定延迟时间;

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

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

htop界面所支持的一些交互式命令:

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

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

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

  • t:显示进程树

注:

   详细使用方法参考:

演示:  

[epel]
name=Fedora-epel/7/x86_64
baseurl=http://10.1.0.1/fedora-epel/$releasever/$basearch/                                                              # 使用的是变量 6和7都适用
gpgcheck=0

安装好之后,直接通过 # yum install htop 命令进行安装,安装后执行htop命令即可,

 如下:

进程及作业管理(二)_进程_02

帮助如下:

进程及作业管理(二)_进程_03

内存工具

作用:

  • 动态显示系统资源的使用情况,这些资源包括:内存、磁盘、网络、cpu等资源

 1.vmstat命令

vmstat命令:虚拟内存信息

用法:

  • vmstat[options] [delay [count]]

每一行所代表的含义:

进程及作业管理(二)_作业管理_04


选项:

  • -s:显示内存统计数据

演示:  

[root@centos7 ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  0      0 458712   1372 295840    0    0     4     0   29   24  0  0 99  0  0

# 每两秒中显示一次,共显示3次
[root@centos7 ~]# vmstat 2 3
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 2  0      0 458664   1372 295840    0    0     4     0   29   24  0  0 99  0  0
 0  0      0 458664   1372 295840    0    0     0     0   21   21  0  0 100  0  0
 0  0      0 458664   1372 295840    0    0     0     0   21   13  0  0 100  0  0
# 显示内存统计数据信息
[root@CentOS6 ~]# vmstat -s
      1004136  total memory
       367776  used memory
       171720  active memory
        89104  inactive memory
       636360  free memory
        48268  buffer memory
       194220  swap cache
      2097148  total swap
            0  used swap
      2097148  free swap
         1290 non-nice user cpu ticks
           50 nice user cpu ticks
         4044 system cpu ticks
      1415750 idle cpu ticks
         4467 IO-wait cpu ticks
           10 IRQ cpu ticks
          854 softirq cpu ticks
            0 stolen cpu ticks
       244210 pages paged in
        47602 pages paged out
            0 pages swapped in
            0 pages swapped out
       236639 interrupts
       233074 CPU context switches
   1488242549 boot time
         3436 forks

 2.pmap命令

pmap命令 报告进程的内存映射

用法:

  • pmap [options] pid[...]

  • -x:显示详细格式的信息;

演示:

[root@centos7 ~]# pmap 1
1:   /usr/lib/systemd/systemd --switched-root --system --deserialize 21
00007ff0a5d59000     16K r-x-- libuuid.so.1.3.0
00007ff0a5d5d000   2044K ----- libuuid.so.1.3.0
00007ff0a5f5c000      4K r---- libuuid.so.1.3.0
00007ff0a5f5d000      4K rw--- libuuid.so.1.3.0
00007ff0a5f5e000    224K r-x-- libblkid.so.1.1.0
00007ff0a5f96000   2048K ----- libblkid.so.1.1.0
00007ff0a6196000     12K r---- libblkid.so.1.1.0
00007ff0a6199000      4K rw--- libblkid.so.1.1.0

 另外一种实现方式:# cat /proc/PID/maps 如下:

[root@centos7 ~]# cat /proc/1/maps
7ff0a5d59000-7ff0a5d5d000 r-xp 00000000 08:03 33782768        /usr/lib64/libuuid.so.1.3.0
7ff0a5d5d000-7ff0a5f5c000 ---p 00004000 08:03 33782768        /usr/lib64/libuuid.so.1.3.0
7ff0a5f5c000-7ff0a5f5d000 r--p 00003000 08:03 33782768        /usr/lib64/libuuid.so.1.3.0
7ff0a5f5d000-7ff0a5f5e000 rw-p 00004000 08:03 33782768        /usr/lib64/libuuid.so.1.3.0
7ff0a5f5e000-7ff0a5f96000 r-xp 00000000 08:03 34593175        /usr/li

系统监测工具

 1.glances命令

介绍:

  • glances是一款用于Linux、BSD的开源命令行系统监控工具。能够监视CPU、负载、内存、磁盘I/O、网络流量、文件系统、系统温度等信息。

选项:

  • -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:要连入的服务器端地址

演示:

进程及作业管理(二)_进程_05帮助信息如下:

进程及作业管理(二)_作业管理_06


2.dstat命令

dsate命令:系统监控工具(很重要)

  • dstat是一个可以取代vmstat、iostat、netstat和ifstat这些命令的多功能产品。dastat可以很方便的监控系统运行状况并用于基准测试和排除故障。

用法:

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

选项:

进程及作业管理(二)_作业管理_07


使用参考

演示:

进程及作业管理(二)_进程_08

 



  以上都是一些进程的查看、进程资源的获取等命令,接下来是进程的管理,所谓进程的管理就是向进程发送一些控制信号,来完成对进程的管理控制。

进程管理工具

 1.kill命令

作用:

  • 显示当前系统的信号,以及向进程发送信号指令,以实现对进程的管理。

用法1:

  • kill -l [signal] (显示当前系统可用信号(或者使用man 7 signal)

每个信号有三种表示方式:

  • 信号的数字标识;如 1

  • 信号的完整名称; SIGHUB

  • 信号的简写名称;如 HUB

用法2:

  • kill [-s signal|-SINGAL] pid...  :向进程发送信号

常用的信号:

  • SIGHUP,1:无须重新启动进程而让其重读配置文件,并生效;

  • SIGINT,2:打断正在运行的进程;相当于Ctrl+c;

  • SIGKILL,9:强行终止(杀死)正在运行的进程;

  • SIGTERM,15:安全终止正在运行的进程;

  • SIGCONT,18:继续运行指定的进程;

  • SIGSTOP,19:暂停进程;

演示:

[root@centos7 ~]# kill -l
 1) SIGHUP	 2) SIGINT	 3) SIGQUIT	 4) SIGILL	 5) SIGTRAP
 6) SIGABRT	 7) SIGBUS	 8) SIGFPE	 9) SIGKILL	10) SIGUSR1
11) SIGSEGV	12) SIGUSR2	13) SIGPIPE	14) SIGALRM	15) SIGTERM
16) SIGSTKFLT	17) SIGCHLD	18) SIGCONT	19) SIGSTOP	20) SIGTSTP
21) SIGTTIN	22) SIGTTOU	23) SIGURG	24) SIGXCPU	25) SIGXFSZ
26) SIGVTALRM	27) SIGPROF	28) SIGWINCH	29) SIGIO	30) SIGPWR
31) SIGSYS	34) SIGRTMIN	35) SIGRTMIN+1	36) SIGRTMIN+2	37) SIGRTMIN+3
38) SIGRTMIN+4	39) SIGRTMIN+5	40) SIGRTMIN+6	41) SIGRTMIN+7	42) SIGRTMIN+8
43) SIGRTMIN+9	44) SIGRTMIN+10	45) SIGRTMIN+11	46) SIGRTMIN+12	47) SIGRTMIN+13
48) SIGRTMIN+14	49) SIGRTMIN+15	50) SIGRTMAX-14	51) SIGRTMAX-13	52) SIGRTMAX-12
53) SIGRTMAX-11	54) SIGRTMAX-10	55) SIGRTMAX-9	56) SIGRTMAX-8	57) SIGRTMAX-7
58) SIGRTMAX-6	59) SIGRTMAX-5	60) SIGRTMAX-4	61) SIGRTMAX-3	62) SIGRTMAX-2
63) SIGRTMAX-1	64) SIGRTMAX	

[root@centos7 ~]# kill -l 1
HUP

2.向进程发送信号:

[root@CentOS6 ~]# ps aux |grep httpd  
root       7654  0.0  0.3 186052  3920 ?        Ss   06:02   0:00 /usr/sbin/httpd
apache     7658  0.0  0.2 186052  2516 ?        S    06:02   0:00 /usr/sbin/httpd
apache     7659  0.0  0.2 186052  2500 ?        S    06:02   0:00 /usr/sbin/httpd
apache     7660  0.0  0.2 186052  2500 ?        S    06:02   0:00 /usr/sbin/httpd
apache     7661  0.0  0.2 186052  2500 ?        S    06:02   0:00 /usr/sbin/httpd
apache     7662  0.0  0.2 186052  2500 ?        S    06:02   0:00 /usr/sbin/httpd
apache     7663  0.0  0.2 186052  2500 ?        S    06:02   0:00 /usr/sbin/httpd
apache     7664  0.0  0.2 186052  2500 ?        S    06:02   0:00 /usr/sbin/httpd
root       7697  0.0  0.0 103316   844 pts/0    S+   06:06   0:00 grep --color=auto httpd

# 发送信号
[root@CentOS6 ~]# kill -s 15 7660
[root@CentOS6 ~]# ps aux |grep httpd
root       7654  0.0  0.3 186052  3920 ?        Ss   06:02   0:00 /usr/sbin/httpd
apache     7658  0.0  0.2 186052  2516 ?        S    06:02   0:00 /usr/sbin/httpd
apache     7659  0.0  0.2 186052  2500 ?        S    06:02   0:00 /usr/sbin/httpd
apache     7661  0.0  0.2 186052  2500 ?        S    06:02   0:00 /usr/sbin/httpd
apache     7662  0.0  0.2 186052  2500 ?        S    06:02   0:00 /usr/sbin/httpd
apache     7663  0.0  0.2 186052  2500 ?        S    06:02   0:00 /usr/sbin/httpd
apache     7664  0.0  0.2 186052  2500 ?        S    06:02   0:00 /usr/sbin/httpd
root       7700  0.0  0.0 103316   848 pts/0    S+   06:06   0:00 grep --color=auto httpd

 1.killall命令

作用:

  • 杀死指定进程的所有进程

用法:

  • killall [-SIGNAL] program

演示:

[root@CentOS6 ~]# killall httpd
[root@CentOS6 ~]# ps aux |grep httpd
root       7759  0.0  0.0 103316   848 pts/0    S+   06:30   0:00 grep --color=auto httpd

作业管理(job contral)

 1.Linux作业控制

job

前台作业(foreground):

  • 通过终端启动,且启动后直占据终端

后台作业(background):

  • 可通过终端启动,但启动后即转入后台运行(释放终端)

如何让作业运行于后台?

运行中的作业:

  • Ctrl+z

注意:

  • 送往后台后,作业会转为停止态;

尚未启动的作业:

  • ~]# COMMAND &

注意:

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

  • ~]# nohup COMMAND &

查看所有作业:

  • ~]# jobs

作业控制

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

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

  • # kill [%JOB_NUM]:终止指定的作业;(百分号和作业号是不可以省略的)

演示:

# 运行中的进程按 Ctrl+z 送往后台
[root@CentOS6 ~]# ping www.baidu.com
PING www.a.shifen.com (61.135.169.125) 56(84) bytes of data.
64 bytes from 61.135.169.125: icmp_seq=1 ttl=56 time=3.73 ms
64 bytes from 61.135.169.125: icmp_seq=2 ttl=56 time=4.46 ms
64 bytes from 61.135.169.125: icmp_seq=3 ttl=56 time=5.96 ms
^Z
[1]+  Stopped                 ping www.baidu.com
[root@CentOS6 ~]# htop

[2]+  Stopped                 htop

# 查看后台作业,其中带加号的优先级最高,“-”其次
[root@CentOS6 ~]# jobs  
[1]-  Stopped                 ping www.baidu.com
[2]+  Stopped                 htop

# fg 调回前台,不指明作业号,默认调回有 + 的作业
[root@CentOS6 ~]# fg 
ping www.baidu.com
64 bytes from 61.135.169.121: icmp_seq=5 ttl=56 time=3.84 ms
64 bytes from 61.135.169.121: icmp_seq=6 ttl=56 time=4.23 ms

[root@CentOS6 ~]# kill %1

[1]-  Stopped                 ping 10.1.252.161
[root@CentOS6 ~]# jobs
[1]-  Terminated # 已终止           ping 10.1.252.161
[2]+  Stopped                 htop
[root@CentOS6 ~]# jobs
[2]+  Stopped                 htop

 2.进程优先级及调整进程nice值的方法

进程优先级

  • 可通过nice值调整的优先级范围:100-139;

  • nice值分别对应于:-20,19;

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

  • 只有根用户才能降低nice值(提高优先性);

调整进程nice值的方法:

对于尚未启动的进程 (仅管理员可调低nice值

  • # nice -n N COMMAND :N表示nice值,范围 -20~19;

对于已经启动并处于运行中进程的nice值

  • # renice [-n] N PID

查看nice值和优先级

  • # ps axo pid,comm,ni,priority

演示:

[root@CentOS6 ~]# nice -n -5 htop
[root@CentOS6 ~]# ps axo pid,comm,ni,priority |grep htop
  8275 htop             -5  15
[root@CentOS6 ~]# renice -n -3 8275
8275: old priority -5, new priority -3
[root@CentOS6 ~]# ps axo pid,comm,ni,priority |grep htop
  8275 htop             -3  17