首页 > 系统服务 > 详细

自学Linux Shell15.2-作业控制命令(jobs/bg/nice/renice/at/atrm/cron)

时间:2018-07-03 10:47:49      阅读:221      评论:0      收藏:0      [点我收藏+]

点击返回 自学Linux命令行与Shell脚本之路

15.1-作业控制命令(jobs/bg/nice/renice/at/atrm/cron)

1  控制作业

1.1查看作业 (jobs命令)

jobs命令可以查看shell处理的当前作业。
jobs命令的参数:

  • -l 列出进程的PID及作业号
  • -n 只列出上次shell发出的通知后改变了状态的作业
  • -p 只列出作业的PID
  • -r 只列出运行中的作业
  • -s 只列出已停止的作业

技术分享图片

以上解析:

脚本使用$$变量显示Linux系统分配给脚本的PID,然后进入循环,每次迭代间隔5秒。通过命令行节目启动第一个脚本,然后使用Ctrl+Z组合键停止它。
使用&符号以后台进程方式启动另一个作业,并将该脚本的输出重定向到一个文件,以便不会在监视器上显示。
作业启动之后,使用jobs命令查看分配给shell的作业。jobs命令即可以显示停止的作业也可以显示作业状态,还包括作业编号以及作业中使用的命令。

jobs输出中输出中的加号和减号

  • 带有加号的作业被视为默认作业。如果命令行没有指定作业编号,则它应该是任何作业控制命令引用的作业。
  • 带有减号的作业实在处理完当前默认作业之后将成为默认作业的作业。
  • 某一时间点,只能有一个带有加号的作业,也只能有一个带有减号的作业,无论shell中运行了多少作业。

2.重启停止的作业 (bg命令)

在bash作业控制下,能够以后台进程或前台进程的形式重新启动任何停止的作业。前台进程将控制正在处理的终端,因此谨慎使用特性。
要以后台模式重新启动作业,可以使用带有作业编号的bg命令。
bg命令格式:bg 作业编号

 技术分享图片

以后台模式重新启动作业,出现命令行界面提示符,能够继续处理其他命令。
要以前台模式重新启动,可以使用带有作业编号的fg命令:fg 作业编号

 技术分享图片

2  调度优先级作业

在多任务操作系统中,内核负责为系统中运行的每个进程分配CPU时间。实际上,CPU中一次只能运行一个进程,因此内核轮流向每个进程分配CPU时间

默认情况下,从shell启动的所有进程在Linux系统上的调度优先级都相同。调度优先级是内核相对其他进程分配个某一个进程的CPU时间量。

调度优先级是一个整数值,从-20(最高优先级)到+20(最低优先级)。默认情况下,bash shell启动所有优先级为0的进程。这表明只需要一点处理时间的简单脚本与需要运行几个小时的复杂数学算法得到的CPU时间段相同。

有时需要更改特定命令的优先级,可能要降低优先级以减少它占用的CPU资源,还可能要提高优先级,以获得更多的处理时间。

2.1 nice命令

nice命令可在启动命令时设置它的调度优先级

  • 要让命令在更低的优先级下运行,只需要使用nice -n命令行选项指定一个新的优先级水平
  • 必须将nice命令和要启动命令放置于同一行
  • nice命令阻止普通系统用户来提高命令的优先级
  • 也可以通过 nice 破折号后面跟上优先级 设定

 技术分享图片

2.2 renice命令

renice命令可以更改已经在系统中运行的命令优先级。它能够指定运行进程的PID以更改优先级

renice命令自动更新运行程序的调度优先级。renice命令有如下几个限制:

  • 只能对拥有的进程使用renice命令
  • 只能使用renice命令将进程调至更低的优先级
  • 根用户可以使用renice命令将任何进程调至任何优先级。
  • 如果要完全控制运行进程,则需要以根用户登录。

3  定时运行作业

 

 

 


Linux使用信号与系统上运行的进程进行通信。
可以使用这些信号控制Shell脚本的运行,只需要让shell脚本在接收到来自Linux系统的特定信号时执行命令即可。

自学Linux Shell15.2-作业控制命令(jobs/bg/nice/renice/at/atrm/cron)

原文:https://www.cnblogs.com/yaoyaojcy/p/9256720.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!