计划任务
循环执行的计划任务
用户的设置
用户想要建立循环型计划任务时,使用的是 crontab 这个命令。
当用户使用 crontab 这个命令来建立计划任务之后,该项任务就会记录到/var/spool/cron
中,而且是以帐号来作为判断根据的。
举例来说,dmtsai
使用crontab
后,它的任务会被记录到/var/spool/cron/dmtsai
中。
但请注意,不要使用 vi 直接编辑该文件,因为可能由于输入语法错误,会导致无法执行 cron。
另外,cron 执行的的每一项任务都会被记录到/var/log/cron
这个日志文件中,所以,如果你的 Linux 不知道是否被植入木马时,也可以查找一下/var/log/cron
这个日志文件。
crontab
的语法:
1 2 3 4 5 6 |
|
1 2 3 4 5 |
|
编辑完毕之后输入:wq
并存储后退出 vi 即可。
每项任务(每行)的格式都具有六个字段,这六个字段的意义为
代表意义 | 分钟 | 小时 | 日期 | 月份 | 周 | 命令 |
---|---|---|---|---|---|---|
数字范围 | 0 ~ 59 | 0 ~ 23 | 1 ~ 31 | 1 ~ 12 | 0 ~ 7 | 需要执行的命令 |
比较有趣的是那个周
,周的数字为 0 或 7 时,都代表星期天
的意思。
另外,还有下面这些特殊字符
特殊字符 | 代表意义 |
---|---|
* (星号) |
代表任何时刻都接受的意思。举例来说,范例一内那个日、月、周都是* ,就代表着“不论何月、何日的星期几的 12:00 都执行后续命令” 的意思 |
, (逗号) |
代表分割时段的意思。举例来说,如果要执行的任务是 3:00 与 6:00 时,就会是: 0 3,6 * * * command 时间参数还是有五栏,不过第二栏是 3、6,代表 3 与 6 都适用 |
- (减号) |
代表一段时间范围内,举例来说,8 点到 12 点之间的每小时的 20 分都执行一项任务:20 8-12 * * 8 comman 仔细看到第二栏变成 8-12 ,代表8、9、10、11、12 都适用的意思 |
/n (斜线) |
那个 n 代表数字,亦即是“每隔 n 单位间隔”的意思,例如每五分钟执行一次,则:*/5 * * * * command 很简单吧!用* 与/5 来搭配,也可以写成0-59/5 ,相同意思 |
例题
假若你的女朋友生日是 5 月 2 日,你想要在 5 月 1 日 的 23:59 发一封信给她,这封信的内容已经写在/home/dmtsai/lover.txt
内了,该如何执行?
答:直接执行 crontab -e 之后,编辑成为:
1 |
|
那样的话,每年 kiki 都会收到你的这封信。(当然,信的内容就要每年变一变)
例题:
假如每五分钟需要执行/home/dmtsai/test.sh
一次,又该如何?
答:同样使用crontab -e
进入编辑:
1 |
|
crontab 每个人都只有一个文件存在,就是在/var/spool/cron
里面。
还有建议:“命令执行时,最好使用绝对路径,这样比较不会找不到执行文件”(使用 which cmd 查看命令的绝对路径)
例题
假如你每星期六都与朋友有约,那么想要每个星期五下午
切换编辑器
1 2 3 4 5 6 7 8 9 |
|
设置环境变量
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|