首页 > 代码库 > 进程及作业管理(二)
进程及作业管理(二)
概述:
本篇是上篇进程及作业管理(一)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 信息
系统当前的时间,即:22:29:39
系统启动到现在所经过的时间,即:up 14:02
当前已登录系统的用户数,即:2 users
系统在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:显示进程树
注:
详细使用方法参考:
http://www.cnphp6.com/archives/65078
https://linux.cn/article-3141-1.html
演示:
[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命令即可,
如下:
帮助如下:
内存工具
★作用:
动态显示系统资源的使用情况,这些资源包括:内存、磁盘、网络、cpu等资源
1.vmstat命令;
★vmstat命令:虚拟内存信息
☉用法:
vmstat[options] [delay [count]]
☉每一行所代表的含义:
☉选项:
-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:要连入的服务器端地址
演示:
帮助信息如下:
2.dstat命令;
★dsate命令:系统监控工具(很重要)
dstat是一个可以取代vmstat、iostat、netstat和ifstat这些命令的多功能产品。dastat可以很方便的监控系统运行状况并用于基准测试和排除故障。
☉用法:
dstat [-afv] [options..] [delay [count]]
☉选项:
使用参考
https://linux.cn/article-3215-1.html
演示:
系统监测工具
1.glances命令;
★
八、进程管理工具
以上都是一些进程的查看、进程资源的获取等命令,接下来是进程的管理,所谓进程的管理就是向进程发送一些控制信号,来完成对进程的管理控制。
Kill命令
显示当前系统的信号,以及向进程发送信号指令,以实现对进程的管理。
1.kill -l [signal]
显示当前系统可用信号(或者使用man 7 signal)
如下:
[root@CentOS6 ~]# 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@CentOS6 ~]# kill -l 1 HUP
2.每个信号的表示方法有三种:
1)信号的数字标识;如 1
2)信号的完整名称;如 SIGHUB
3)信号的简写名称;如 HUB
3.向进程发送信号:
kill [-s signal|-SINGAL]pid...
[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
4.常用的信号:
SIGHUP,1: 无须重新启动进程而让其重读配置文件,并生效;
SIGINT,2: 打断正在运行的进程;相当于Ctrl+c;
SIGKILL,9: 强行终止(杀死)正在运行的进程;
SIGTERM,15:安全终止正在运行的进程;
SIGCONT,18:继续运行指定的进程;
SIGSTOP,19:暂停进程;
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 control)
Linux的作业控制
1.job:
前台作业(foreground):通过终端启动,且启动后一直占据终端;
后台作业(background):可通过终端启动,但启动后即转入后台运行(释放终端)
2.如何让作业运行于后台?
(1) 运行中的作业:
Ctrl+z
注意:送往后台后,作业会转为停止态;
(2) 尚未启动的作业:
# COMMAND &
注意:
◎此类作业虽然被送往后台运行,但其依然与终端相关;退出终端,将关闭后台作业。 ◎如果希望送往后台后,剥离与终端的关系:
# nohup COMMAND &
3.查看所有作业:
# jobs
[root@centos7 ~]# jobs [1]- Stopped ping 10.1.252.153 [2]+ Stopped vim /tmp/abc.txt
4.作业控制:
# fg[[%]JOB_NUM]:把指定的后台作业调回前台;
# bg[[%]JOB_NUM]:让送往后台的作业在后台继续运行;
# kill [%JOB_NUM]:终止指定的作业;(百分号和作业号是不可以省略的)
示例:
[root@CentOS6 ~]# jobs [1]- Stopped ping 10.1.252.161 [2]+ Stopped htop [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
5.进程优先级
可通过nice值调整的优先级范围:100-139;
nice值分别对应于:-20,19;
进程启动时默认的nice值为0,优先级为120;
只有根用户才能降低nice值(提高优先性);
调整进程的nice值的方法:
1)对于尚未启动的进程
# nice -n N COMMAND :N表示nice值,范围 -20~19;
仅管理员可调低nice值
2)对于已经启动并处于运行中进程的nice值
# renice [-n] N PID
3)查看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
本文出自 “逐梦小涛” 博客,请务必保留此出处http://1992tao.blog.51cto.com/11606804/1901943
进程及作业管理(二)