一、linux中工作排程的种类:
1、例行性工作排程:每隔一定时间就要办的事情,如上班打卡;linux中通过crontab命令,实现例行性工作排程
2、突发性工作排程:仅运行一次就结束的,如打折促销;linux中通过at命令,实现突发性工作排程
二、at
at用来处理仅运行一次就结束排程的命令,不过要运行at命令,必须先有atd这个服务的支持。
at的运行方式:我们使用at这个命令产生所要运行的工作,并将这个工作以文字档的方式写入/var/spool/at目录内,该工作便能等待atd这个服务的取用和运行了。
at命令的使用权限:1、在、/etc/at.allow文件内的用户; 2、不在/etc/at.deny文件内的用户; 3、root用户
基本语法:
root@www ~]# at [-mldv] TIME
[root@www ~]# at -c 工作号码选项与参数:
-m :当 at 的工作完成后,即使没有输出信息,亦以 email 通知使用者该工作已完成。
-l :at -l 相当於 atq,列出目前系统上面的所有该使用者的 at 排程;
-d :at -d 相当於 atrm ,可以取消一个在 at 排程中的工作;
-v :可以使用较明显的时间格式列出 at 排程中的工作列表;
[root@www ~]# at -c 工作号码选项与参数:
-m :当 at 的工作完成后,即使没有输出信息,亦以 email 通知使用者该工作已完成。
-l :at -l 相当於 atq,列出目前系统上面的所有该使用者的 at 排程;
-d :at -d 相当於 atrm ,可以取消一个在 at 排程中的工作;
-v :可以使用较明显的时间格式列出 at 排程中的工作列表;
-c :可以列出后面接的该项工作的实际命令内容。
TIME:时间格式,这里可以定义出『什么时候要进行 at 这项工作』的时间,格式有:
HH:MM ex> 04:00
在今日的 HH:MM 时刻进行,若该时刻已超过,则明天的 HH:MM 进行此工作。
HH:MM YYYY-MM-DD ex> 04:00 2009-03-17
强制规定在某年某月的某一天的特殊时刻进行该工作!
HH:MM[am|pm] [Month] [Date] ex> 04pm March 17
也是一样,强制在某年某月某日的某时刻进行!
HH:MM[am|pm] + number [minutes|hours|days|weeks]
ex> now + 5 minutes ex> 04pm + 3 days
就是说,在某个时间点『再加几个时间后』才进行。
HH:MM ex> 04:00
在今日的 HH:MM 时刻进行,若该时刻已超过,则明天的 HH:MM 进行此工作。
HH:MM YYYY-MM-DD ex> 04:00 2009-03-17
强制规定在某年某月的某一天的特殊时刻进行该工作!
HH:MM[am|pm] [Month] [Date] ex> 04pm March 17
也是一样,强制在某年某月某日的某时刻进行!
HH:MM[am|pm] + number [minutes|hours|days|weeks]
ex> now + 5 minutes ex> 04pm + 3 days
就是说,在某个时间点『再加几个时间后』才进行。
三、crontab
crontab的运行方式:当使用crontab创建工作行程后,该工作就会被记录到/var/spool/crontab/$username($username 代表执行名的用户,如:ym用户执行了crontab命令,那么这项工作形成就会被写入/var/spool/crontab/ym文件中去)。注意:不要直接使用vim访问该文件,否则可能由于语法错误,导致crontab无法运行。
crontab命令的使用权限:1、在/etc/crontab.allow文件中的用户; 2、不再/etc/crontab.deny文件中的用户; 3、root用户
基本语法:
[root@www ~]# crontab [-u username] [-l|-e|-r]选项与参数:
-u :只有 root 才能进行这个任务,亦即帮其他使用者创建/移除 crontab 工作排程;
-e :编辑 crontab 的工作内容
-l :查阅 crontab 的工作内容
-u :只有 root 才能进行这个任务,亦即帮其他使用者创建/移除 crontab 工作排程;
-e :编辑 crontab 的工作内容
-l :查阅 crontab 的工作内容
-r :移除所有的 crontab 的工作内容,若仅要移除一项,请用 -e 去编辑。
范例一:用 dmtsai 的身份在每天的 12:00 发信给自己
[dmtsai@www ~]$ crontab -e
# 此时会进入 vi 的编辑画面让您编辑工作!注意到,每项工作都是一行。
0 12 * * * mail dmtsai -s "at 12:00" < /home/dmtsai/.bashrc
#分 时 日 月 周 |<==============命令串========================>|
每项工作的格式都是具有6个栏位,这六个栏位的意义分别表示:
代表意义 分钟 小时 日期 月 周 命令
数字范围 0-59 0-23 1-31 1-12 0-7 工作命令
辅助字符:
*(星号):代表任何时刻都接受的意思
,(逗号):代表分隔时段的意思。举例来说,如果要下达的工作是 3:00 与 6:00 时,就会是:0 3,6 * * * command 时间参数还是有五栏,不过第二栏是 3,6 ,代表 3 与 6 都适用!
-(减号):代表一段时间范围内,举例来说, 8 点到 12 点之间的每小时的 20 分都进行一项工作:20 8-12 * * * command 仔细看到第二栏变成 8-12 喔!代表 8,9,10,11,12 都适用的意思!
/n(斜线):那个 n 代表数字,亦即是『每隔 n 单位间隔』的意思,例如每五分钟进行一次,则:*/5 * * * * command 很简单吧!用 * 与 /5 来搭配,也可以写成 0-59/5 ,相同意思!
练习:
每天凌晨3点执行一次/usr/local/nginx/html/test.php 文件;
使用crontab -e 进入编辑:
0 3 * * * /usr/local/nginx/html/test.php