jobs命令能够查看shell处理的当前做业。
jobs命令的参数:算法
以上解析:shell
脚本使用$$变量显示Linux系统分配给脚本的PID,而后进入循环,每次迭代间隔5秒。经过命令行节目启动第一个脚本,而后使用Ctrl+Z组合键中止它。
使用&符号之后台进程方式启动另外一个做业,并将该脚本的输出重定向到一个文件,以便不会在监视器上显示。
做业启动以后,使用jobs命令查看分配给shell的做业。jobs命令便可以显示中止的做业也能够显示做业状态,还包括做业编号以及做业中使用的命令。
jobs输出中输出中的加号和减号。缓存
在bash做业控制下,可以之后台进程或前台进程的形式从新启动任何中止的做业。前台进程将控制正在处理的终端,所以谨慎使用特性。
要之后台模式从新启动做业,可使用带有做业编号的bg命令。
bg命令格式:bg 做业编号bash
之后台模式从新启动做业,出现命令行界面提示符,可以继续处理其余命令。
要之前台模式从新启动,可使用带有做业编号的fg命令:fg 做业编号。服务器
在多任务操做系统中,内核负责为系统中运行的每一个进程分配CPU时间。实际上,CPU中一次只能运行一个进程,所以内核轮流向每一个进程分配CPU时间。网络
默认状况下,从shell启动的全部进程在Linux系统上的调度优先级都相同。调度优先级是内核相对其余进程分配个某一个进程的CPU时间量。ide
调度优先级是一个整数值,从-20(最高优先级)到+20(最低优先级)。默认状况下,bash shell启动全部优先级为0的进程。这代表只须要一点处理时间的简单脚本与须要运行几个小时的复杂数学算法获得的CPU时间段相同。工具
有时须要更改特定命令的优先级,可能要下降优先级以减小它占用的CPU资源,还可能要提升优先级,以得到更多的处理时间。url
nice命令可在启动命令时设置它的调度优先级。
renice命令能够更改已经在系统中运行的命令优先级。它可以指定运行进程的PID以更改优先级
renice命令自动更新运行程序的调度优先级。renice命令有以下几个限制:
在处理脚本时,总会遇到须要在给定时间运行脚本。Linux系统提供3中方式在预约时间运行脚本:at命令、batch命令、cron表格。每种方法使用不一样的技术调度运行脚本的时间和频率。
at命令容许指定Linux系统运行脚本的时间。at命令将做业提交到一个队列,并指示shell在什么时候运行该做业。另外一个命令atd之后台模式运行,并检查做业队列以运行做业。大部分Linux发行版均可以在启动时自动启动该特性。
atd命令检查系统上的特殊目录,以便运行使用at命令提交的做业。默认状况下,atd命令每隔60秒检查一次该目录。若是存在做业,atd命令检查运行做业的时间。若是时间与当前时间匹配,则atd命令将运行该做业。
3.1.1 at命令格式 at [-f filename] time
默认状况下,at命令将STDIN的输入提交到队列。可使用-f参数指定用于读取命令的的文件名(脚本参数)。
time参数指定Linux系统运行做业的时间。at命令能够识别各类时间格式:
除了指定运行做业的时间以外,还能够包括具体的日期,可使用各类格式的日期:
使用at命令时,做业将提交到做业队列中。
做业队列保存at命令提交的做业以便处理。有26种不一样的做业对垒可用于不一样的优先级水平。使用小写字母a到z引用做业队列。
默认状况下,全部的at做业都提交到做业队列a,即优先级最高的队列。若是但愿以较低的优先级运行做业,则可使用-q参数指定字母。
参数:
3.1.2 获取做业输出
做业在Linux系统运行时,没有与该做业关联的监视器。Linux使用提交做业的用户的电子邮箱地址做为STDOUT和STDERR。任何以STDOUT和STDERR为目的的输出都将经过邮件系统发送给用户。
若是系统没有安装at、mail命令使用命令:sudoapt-get install at、sudo apt-get install mail。进行安装。
3.1.3 列出等待的做业 (atq 后者at -l)
参看系统哪些做业在等待。 显示做业号、系统运行该做业的日期和时间以及所在的做业队列。
3.1.4 删除做业(atrm 后者at -d)
Linux系统使用cron程序调度需按期运行的job。corn程序在后台运行,它从特殊表格(corn表格)中查找须要调度运行的做业。
3.2.1 cron表格
cron表格使用特殊格式指定做业运行时间。cron表格的格式以下:
min hour dayofmonth month dayofweek command
cron表格能够将条目指定为具体的值、必定范围的值(如 1-5)或通配符(*)。例如,若是但愿天天10:15运行命令,可使用如下corn表格项:15 10 * * * command。
dayofweek项能够是3字符的文本值(mon、tue、wed、thu、fri、sat、sun),也能够是数字:0标识星期天,6表示星期六。
dayofmonth项指定每月的日期值(1-31)。
PS:
由于每月份不一样,因此如何设置一个命令在每月的最后一天执行呢?
一种经常使用的方法是添加:if-then语句,该语句使用date命令检查明天是不是1号:
00 12 * * * if [ `date +%d -d tomorrow` =01 ] ; then ; command
经过if判断明天是否为01,若是是则执行命令。这将在天天的12点查看本日是不是该月的最后一天,若是是,它将运行命令。
命令列表必须制定要运行的命令或shell脚本的完整路径名。能够根据须要添加任何命令行参数或者重定向符号。
cron程序使用提交做业的用户帐户运行脚本。所以必须拥有相应的权限才能访问命令行列表中的指定的命令和输出文件。
3.2.2 构建cron时间表
每一个系统用户均可以拥有本身的cron表格以及运行安排好的做业。Linux提供crontab命令处理cron表格。
Linux下的任务调度分为两类:系统任务调度和用户任务调度。
系统任务调度:系统周期性所要执行的工做,好比写缓存数据到硬盘、日志清理等。在/etc
目录下有一个crontab文件,这个就是系统任务调度的配置文件。
前四行是用来配置crond任务运行的环境变量
用户任务调度:用户按期要执行的工做,好比用户数据备份、定时邮件提醒等。用户可使用 crontab 工具来定制本身的计划任务。全部用户定义的crontab文件都被保存在/var/spool/cron
目录中。其文件名与用户名一致,使用者权限文件以下:
1 /etc/cron.deny 该文件中所列用户不容许使用crontab命令 2 /etc/cron.allow 该文件中所列用户容许使用crontab命令 3 /var/spool/cron/ 全部用户crontab文件存放的目录,以用户名命名
crontab文件的含义:用户所创建的crontab文件中,也就是cron表格。(从新介绍一下)
每一行都表明一项任务,每行的每一个字段表明一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式以下:
1 minute hour day month week command 顺序:分 时 日 月 周
其中:
在以上各个字段中,还可使用如下特殊字符:
每1分钟执行一次command
1 * * * * * command
每小时的第3和第15分钟执行
1 3,15 * * * * command
在上午8点到11点的第3和第15分钟执行
1 3,15 8-11 * * * command
每隔两天的上午8点到11点的第3和第15分钟执行
1 3,15 8-11 */2 * * command
每一个星期一的上午8点到11点的第3和第15分钟执行
1 3,15 8-11 * * 1 command
每晚的21:30重启smb
1 30 21 * * * /etc/init.d/smb restart
每个月一、十、22日的4 : 45重启smb
1 45 4 1,10,22 * * /etc/init.d/smb restart
每周6、周日的1:10重启smb
1 10 1 * * 6,0 /etc/init.d/smb restart
天天18 : 00至23 : 00之间每隔30分钟重启smb
1 0,30 18-23 * * * /etc/init.d/smb restart
每星期六的晚上11:00 pm重启smb
1 0 23 * * 6 /etc/init.d/smb restart
每一小时重启smb
1 * */1 * * * /etc/init.d/smb restart
晚上11点到早上7点之间,每隔一小时重启smb
1 * 23-7/1 * * * /etc/init.d/smb restart
每个月的4号与每周一到周三的11点重启smb
1 0 11 4 * mon-wed /etc/init.d/smb restart
一月一号的4点重启smb
1 0 4 1 jan * /etc/init.d/smb restart
3.2.3 浏览cron目录
有4个基本目录 hourly、daily、monthly、weekly
若是须要脚本天天运行1次,只要将脚本复制到daily目录,cron就会天天执行一次。
3.2.4 anacron程序
使用cron程序存在的惟一一个问题是,它假定Linux系统天天运行24小时,每周运行7天。只有在服务器环境中运行Linux时才能发生这种状况。
若是在使用cron程序调度做业时Linux系统处于关闭状态,则做业将没法运行。cron程序没法再系统打开后从新运行错过的做业。
anacron程序使用时间戳肯定调度的做业是否在正确的时间间隔运行。若是它肯定某个做业错过了调度的运行时间,它将自动尽快的运行该做业。
该特性对于执行日志维护的脚本很是有用。若是系统在应该运行脚本时老是关机,则日志文件将得不到清理,文件大小可能会不断增大。使用anacron能够保证日志文件至少在每次系统启动的时清理一次。
anacron程序使用本身的表格(一般位于/etc/anacrontab)指定做业。在大部分Linux发行版本,该表格仅供根用户使用。
anacron表格的格式:period delay identifiercommand