Linux进程管理.二Day.21

一.管理进程状态

当程序运行为进程后如果希望停止进程时可以使用kill命令对进程发送关闭信号。除了kill还有killall,pkill

1.使用kill -l 列出当前系统所用的信号

[root@localhost ~]# kill -l

常用:

1:SIGHUP (重新加载配置文件)

9:SIGKILL(强制杀死进程)

15:SIGTERM(终止进程,默认kill使用该信号)

使用方法:

[root@yum-test ~]# kill 7259

(kill  加进程PID 正常停止一个程序)

[root@localhost ~]# kill -1 8668

(kill -1  加进程PID 平滑重载配置文件【重载之后PID不变】)

[root@yum-test ~]# kill -9 7488

(kill -9 加进程PID  强制杀死一个进程)

[root@yum-test ~]# pkill zibbx

(pkill  加程序名  批量杀死有关zibbx的进程)

[root@yum-test ~]# killall nginx

(killall  加程序名  批量杀死有关nginx的进程)

二.如何管理后台进程

1.通常进程都会在终端运行,一旦关闭终端进程也就随着结束。那么将进程放入后台运行就会比较方便,不会影响到终端的正常运行。比如拷贝比较大的文件或者下载文件等等一些不可中断的进程。

2.将进程放入后台的工具

jobs,bg,fg等方式需要先查看状态比较麻烦,推荐使用screen。screen用法:

[root@yum-test ~]# screen -S wget_os

(screen -S  窗口名称    开启一个screen窗口,指定名称)

在开启的screen窗口执行任务即可

退出窗口:

ctrl+a+d

[detached from 26650.wget_os]

(平滑退出screen窗口,但是不会终止screen中的任务)

[root@yum-test ~]# exit

[screen is terminating]

(终止screen窗口)

[root@yum-test ~]# screen  -list

(查看screen窗口正在运行的任务)

[root@yum-test ~]# screen  -r wget_os(或PID)

(进入正在运行的任务窗口)

三.进程优先级是什么

1.优先级指的就是优先选择,优先享受资源,比如排队买票时的军人优先。

2.进程的nice值越高:表示优先级越低。例如:19,该进程容易将CPU使用量让给其他进程。

进程的nice值越低:表示优先级越高。例如:-20,该进程更不容易将CPU使用量让给其他进程。

NI=0 PR=20

NI=-20    PR=0

NI=10    PR=30

NI=19    PR=39

NI=5      PR=25

3.nice,renice用法。(-n 优先级数字【例如:-n  -20】-p 指定进程的PID)

nice用法(启动一个程序为该程序设定优先级):在ssh的NI为0时

终端0:

[root@localhost ~]# nice -n 5 vim zy

终端1:

[root@localhost ~]# ps axo pid,command,nice|grep vim |grep -v grep

  9698 vim zy                        5

nice用法:在ssh的NI为-20时

[root@localhost ~]# ps axo pid,command,nice|grep vim|grep -v grep

  9792 vim zy                      -15

renice用法(调整已经启动过的进程优先级):

[root@yum-test ~]# renice -n -20 -p 7261 (sshPID)

root@yum-test ~]# ps axo pid,command,nice|grep ssh

  7261 /usr/sbin/sshd -D          -20

四.平均负载(查看负载情况top或uptime)

1.平均负载可以简单理解为,平均负载其实就是单位时间内的活跃进程数。(处于运行中的进程)+(处于等待运行的进程)+(不可中断的进程)

1. 如果平均负载(1分钟,5分钟,15分钟)的三个基数基本相同或者相差不大,那么说明系统负载很平稳。

2.但如果1分钟的值远小于15分钟的值,那么就说明系统最近1分钟的负载在减少,而过去的15分钟内却有很大的负载。

相反,如果1分钟的值远大于15分钟的值,那就说明最近1分钟的负载在增加,这种增加有可能是临时性的,也有可能还会持续增加,需要持续观察。

例如:假设有两个CPU,系统上看到的平均负载为 2.73  6.90 12.98

说明在过去的1分钟内,系统有136%的超载(2.73/2=136%)

在过去的5分钟内,系统有345%的超载(6.90/2=345%)

在获取的15分钟内,系统有649%的超载(12.98/2=649%)

总体来说系统的负载是在逐渐的降低。

PS:一旦1一分钟的平均负载接近或超过了CPU的个数,就意味着系统正在发生过载的问题,这个时候就需要分析问题并优化。

(实际生产环境中当平均负载高于CPU数量70%的时候,就要分析并优化,但是70%也不是觉得,可以选择将系统的平均负载监控起来。)

3.平均负载与CPU使用率没有直接关系。

平均负载是指单位时间内,处于可运行状态和不可中断状态的进程数,所以他不仅包括了正在使用CPU的进程,还包括了等待CPU的进程和等待I/O的进程。

而CPU使用率是单位时间内CPU繁忙情况的统计,跟平均负载并不一定完全对应。

CPU密集型进程,使用大量CPU会导致平均负载升高,此时这两者是一致的;

I/O密集型进程,等待I/O也会导致平均负载升高,但CPU使用率不一定会很高;

大量等待CPU的进程调度也会导致平均负载升高,此时的CPU使用率也会比较高;

例:

使用工具找出平均负载升高的根源。

1.stress:是Linux系统压力测试工具,这里我们用作异常进程虚拟平均负载升高的常见。

2.mpstat:是多核CPU性能分析工具,用来实时查看每个CPU的性能指标,以及所有CPU的平均指标。

3.pidstat:是一个常用的进程性能分析工具,是来实时查看进程的CPU,内存,I/O以及上下文切换等性能指标。

CPU密集型进程,使用大量CPU会导致平均负载升高,此时这两者是一致的;

终端0:

[root@localhost ~]# stress --cpu 1 --timeout 600

(模拟一个CPU使用率100%以上的场景)

终端1:

[root@localhost ~]# uptime

20:30:22 up 11:58,  2 users,  load average: 1.23, 0.47, 0.20

(负载会持续升高)

终端2:

[root@localhost ~]# mpstat -P ALL 5

08:35:46 PM  CPU    %usr  %nice    %sys %iowait    %irq  %soft  %steal  %guest  %gnice  %idle

08:35:51 PM  all99.80 0.00    0.20    0.00    0.00    0.00    0.00    0.00    0.00    0.00

08:35:51 PM    099.80 0.00    0.20    0.00    0.00    0.00    0.00    0.00    0.00    0.00

(使用mpstat监控所有CPU,每隔5秒输出一组数据)

从终端1可以看到,1分钟的平均负载会慢慢增加到1.23,而中端2还可以看到CPU的使用率为99.80%,但他的iowait只有0。这说明,平均负载的升高是由于CPU使用率为98.80%。可以使用pidstat来查询是哪个进程导致的。

[root@localhost ~]# pidstat -u 5 1

08:44:30 PM  UID      PID    %usr %system  %guest    %CPU  CPU  Command

08:44:35 PM    0      6550    0.20    0.00    0.00    0.20    0  vmtoolsd

08:44:35 PM    0    10450  100.00    0.20    0.00  100.00    0  stress

[root@localhost ~]# kill -9 10450

[root@localhost ~]# uptime

20:46:39 up 12:14,  3 users,  load average:0.56, 0.94, 0.74

(kill掉stress,负载明显降低)

I/O密集型进程,等待I/O也会导致平均负载升高,但CPU使用率不一定会很高;

终端0:

[root@localhost ~]# stress --io 4 --timeout 600

(模拟I/O压力)

终端1:

[root@localhost ~]# uptime

21:03:49 up 12:31,  4 users,  load average: 6.30, 3.06, 1.46

(查看平均负载变化)

终端2:

[root@localhost ~]# mpstat -P ALL 5

09:04:15 PM  CPU    %usr  %nice    %sys %iowait    %irq  %soft  %steal  %guest  %gnice  %idle

09:04:20 PM  all    1.60    0.00  98.40  0.00    0.00    0.00    0.00    0.00    0.00    0.00

09:04:20 PM    0    1.60    0.00  98.40  0.00    0.00    0.00    0.00    0.00    0.00    0.00

(查看CPU和sys的变化)

终端3:

[root@localhost ~]# pidstat -u 5 1

09:06:01 PM  UID      PID    %usr %system  %guest    %CPU  CPU  Command

09:06:06 PM    0      9610    0.00    3.61    0.00    3.61    0  kworker/u256:1

09:06:06 PM    0    10542    0.00    9.64    0.00    9.64    0  kworker/u256:0

09:06:06 PM    0    10558    0.40  14.26    0.00  14.66    0  stress

09:06:06 PM    0    10559    0.60  23.49    0.00  24.10    0  stress

09:06:06 PM    0    10560    0.40  22.69    0.00  23.09    0  stress

09:06:06 PM    0    10561    0.40  24.70    0.00  25.10    0  stress

09:06:06 PM    0    10569    0.00    0.20    0.00    0.20    0  pidstat

(查询问题所在)

[root@localhost ~]# pkill stress

[root@localhost ~]# uptime

21:11:07 up 12:39,  4 users,  load average: 2.28, 4.55, 2.99

(pkill掉stress,发现负载降低)

PS:当系统中运行程序超出CPU运行能力时,就会出现等待CPU的进程。

大量等待CPU的进程调度也会导致平均负载升高,此时的CPU使用率也会比较高;

终端0:

[root@localhost ~]# stress -c 4 --timeout 600

(模拟4个进程)

终端1:

[root@localhost ~]# uptime

21:21:16 up 12:49,  4 users,  load average: 4.11, 2.19, 2.14

(由于系统只有1个CPU,明显要比4个进程少的多,因此系统的CPU处于严重过载状态)

终端2:

(可以看出4个进程争抢一个CPU,每个进程的等待时间高达75%。这些超出CPU计算能力的进程,最终导致CPU过载。)

PS:在查看平均负载时也要注意,可能是CPU密集型进程导致的也有可能是I/O繁忙。当发现负载高的时候可以使用mpstat,pidstat等工具查看负载的原因。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容