作业控制、调整nice值
文章目录
作业控制
在作业停止后, Linux系统会让你选择是终止还是重启。你可以用kill命令终止该进程。要重启停止的进程需要 向其发送一个SIGCONT信号。
启动、停止、终止以及恢复作业的这些功能统称为作业控制。通过作业控制,就能完全控制 shell环境中所有进程的运行方式了。
查看作业
作业控制中的关键命令是jobs命令。jobs命令允许查看shell当前正在处理的作业。
要想查看作业的PID,可以在jobs命令中加入-l选项
$ jobs -l
[1]+ 1897 Stopped ./test10.sh
[2]- 1917 Running $ ./test10.sh > test10.out &
带加号的作业会被当做默认作业。在使用 作业控制命令时,如果未在命令行指定任何作业号,该作业会被当成作业控制命令的操作对象。
当前的默认作业完成处理后,带减号的作业成为下一个默认作业。任何时候都只有一个带加号的作业和一个带减号的作业,不管shell中有多少个正在运行的作业。
重启停止的作业
在bash作业控制中,可以将已停止的作业作为后台进程或前台进程重启。
要以后台模式重启一个作业,可用bg命令加上作业号。
要以前台模式重启作业,可用带有作业号的fg命令。
调整谦让度
在多任务操作系统中(Linux就是),内核负责将CPU时间分配给系统上运行的每个进程。调 度优先级(scheduling priority)是内核分配给进程的CPU时间(相对于其他进程)。在Linux系统 中,由shell启动的所有进程的调度优先级默认都是相同的。
调度优先级是个整数值,从-20(最高优先级)到+19(最低优先级)。默认情况下,bash shell 以优先级0来启动所有进程。
nice命令
nice命令允许你设置命令启动时的调度优先级。要让命令以更低的优先级运行,只要用nice 的-n命令行来指定新的优先级级别。
nice -n 10 ./test4.sh > test4.out &
注意,必须将nice命令和要启动的命令放在同一行中。
nice命令会让脚本以更低的优先级运行,阻止普通系统用户来提高命令的优先级.
nice命令的-n选项并不是必须的,只需要在破折号后面跟上优先级就行了。
renice命令
有时你想改变系统上已运行命令的优先级。这正是renice命令可以做到的。它允许你指定 运行进程的PID来改变它的优先级。
$ renice -n 10 -p 5055
renice命令会自动更新当前运行进程的调度优先级。和nice命令一样,renice命令也有一些限制:
- 只能对属于你的进程执行renice;
- 只能通过renice降低进程的优先级;
- root用户可以通过renice来任意调整进程的优先级。
如果想完全控制运行进程,必须以root账户身份登录或使用sudo命令。
文章作者 Forz
上次更新 2017-08-10