美文网首页Linux 相关文章LinuxLinux学习之路
Linux 之 进程管理 -- 进程管理(kill,nice,r

Linux 之 进程管理 -- 进程管理(kill,nice,r

作者: 熊猫人和熊猫猫 | 来源:发表于2019-10-06 20:53 被阅读0次

1. kill在进程管理中的应用

还记得,之前在Linux 之 进程管理 -- 工作管理 (job control)中,我们有提到 通过kill -signal %jobnumber 的 方式 管理bash背景中的工作吗?(jobnumber就是通过jobs获得的bash中的工作号码)

当然kill的功能不止局限于bash的工作控制,在今天学习的进程管理中同样适用。

这里借用鸟哥的图,把kill的一些常用代号详细解释一下,弱弱得说...
(没什么可神秘的,kill进行 进程管理 的常用代号和之前在 工作管理 中学到的一摸一样嘛)

kill的一些常用代号

1.1 通过 kill -signal PID 进程管理

kill -signal PID(PID就是我们通过pstop观察到的进程号)

  • 强调:kill后面直接加PID数字与加上%jobnumber的情况是不同的!(%专门用在bash的工作控制中)
  • 举例:找出rsyslogd的进程PID,并使其重新读取配置文件
    -- 找出PID的操作: ps aux | grep 'rsyslogd' | grep -v 'grep' | awk '{print $2} ;翻译成人话:通过ps aux获得系统的各项进程情况,撷取出rsyslogd的进程(考虑到grep 'rsyslogd'实质上是一个grep进程,所以后面用grep -v 'grep'除去),并打印第二列的PID号码
    -- 为rsyslogd传递“重新读取配置文件”的信号:kill -1 PID or kill -SIGHUP PID

既然我们到目前为止学了两次 kill,那便在这里做一下总结:

工作模式 kill -signal XXX

  1. kill 可以帮我们将这个signal传送给 XXX:(%jobnumber)或者是某个 PID(直接输入数字)
  2. 想传递什么信息就用什么signal,详细的signal信息可以通过kill -lman 7 signal查询(不要因为人家名叫杀死就认为它只能杀掉进程时用,功能多多得包含在signal。。。)

1.2 通过killall -signal 指令名称 进程管理

这是懒人的做法,因为考虑到kill后面只能接jobnumberPID,这便要配合pspstree等命令,我不想手打那么多命令怎么办?killall -signal 指令名称 拯救你~
工作模式: killall [-iIe] [command name]

  • -i interactive的意思,交互式的,若需要删除时,会出现提示字符给用户
  • -e exact 的意思,表示“后面接的command name 要一致”,但整个完整的指令
  • -I 指令名称(可能含参数)忽略大小写
    可以这么理解:kill进程 为单位进行进程管理, killall是以指令 为单位进行进程管理(如果要删除某个服务,最简单的方法就是利用killall,因为他可以将系统当中所有以某个指令名称启动的进程全部删除)
  • 举例:给予rsyslogd这个指令启动的进程一个SIGHUP的讯号,可以使用命令 killall -1 rsyslogd or killall -SIGHUP rsyslogd
    下面是鸟哥举的例子
    killall 的应用举例

2. 进程的执行顺序管理

2.1了解 Priority 与 Nice 值

我们之前都有提到过Priority 与 Nice 值,他们决定了进程的执行顺序,PRI值越低代表越优先的意思。不过这个PRI值是由核心动态调整的,用户无法直接调整PRI的值。既然我们用户无权干涉PRI,如果我想要调整进程的优先执行顺序时,就要透过Nice值了。PRI与NI的相关性:
PRI(new)=PRI(old) + nice
不过,虽然nice值是可以影响PRI,不过,最终的PRI仍是要经过系统分析后才会决定的。另外,nice值是有正负的,当nice值为负值时,该进程就会降低PRI值,其对应的进程会优先被处理。
注意事项:

  • nice值可以调整的范围为-20-19
  • root 可随意调整自己或他人进程的Nice值,且范围为-20-19
  • 一般使用者仅可调整自己进程的Nice值,且范围仅为0-19(避免一般用户抢占系统资源)
  • 一般使用者仅可将nice值越调越高

2.2 调整程序执行顺序的 nicerenice

2.2.1 新执行的指令即给予新的nice值 nice

工作模式:nice[-n 数字] command

  • -n:后面接一个数值,数值的范围-20-19
    来看看鸟哥的例子,加深理解
    nice 为新执行的 vim 给予新的nice值
2.2.2 已存在进程的nice重新调整 renice

工作模式:renice [number] PID

  • PID :就是需要调整nice值的进程的ID呀~
    同样拿鸟哥的例子理解


    renice 重新调整已经存在进程的nice

    聪明的你有米有注意到,我们修改了自己bash PID的 nice,而bash所触发的ps指令当中的nice也会继承为-5了。所以,整个nice值是可以在父进程-->子进程之间传递的。

postscript:
除了renice可以调整已存在进程的nice,top也是可以的,猫毛在上一篇Linux 之 进程管理 -- 进程观察中以“小插曲”的形式介绍过了。(就是在top执行过程中使用r按键指令)

相关文章

网友评论

    本文标题:Linux 之 进程管理 -- 进程管理(kill,nice,r

    本文链接:https://www.haomeiwen.com/subject/pdpspctx.html