Tops博客

Crontab Linux 定时任务

例行工作 crontab



[root@www ~]# crontab [-u username] [-l-e-r]
选项与参数:
-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
#分 时 日 月 周 <==============命令串========================>






代表意义
分钟
小时
日期
月份





数字范围
0~59
0~23
1~31
1~12
0~7




特殊字符 代表意义
------
* 代表任何时刻都接受的意思!举例来说,范例一内那个日、月、周都是 * , 就代表著『不论何月、何日的礼拜几的 12:00 都运行后续命令』的意思!
, 代表分隔时段的意思。如果要下达的工作是 3:00 与 6:00 时,就会是:3,6 代表 3 与 6 都适用!
- 代表一段时间范围内,8 点到 12 点之间的每小时的 20 分都进行一项工作:
20 8-12 * * * command
/n 那个 n 代表数字,是『每隔 n 单位间隔』的意思,例如每五分钟进行一次*/5 * * * * command,也可以写成 0-59/5

运行一次任务 at



https://cn.linux.vbird.org/linux_basic/0430cron_2.php


[root@www ~]# at [-mldv] TIME
[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[ampm] [Month] [Date] ex> 04pm March 17
也是一样,强制在某年某月某日的某时刻进行!
HH:MM[ampm] + number [minuteshoursdaysweeks]
ex> now + 5 minutes ex> 04pm + 3 days
就是说,在某个时间点『再加几个时间后』才进行。


范例一:再过五分钟后,将 /root/.bashrc 寄给 root 自己
[root@www ~]# at now + 5 minutes <==记得单位要加 s 喔!
at> /bin/mail root -s "testing at job" < /root/.bashrc
at> <EOT> <==这里输入 [ctrl] + d 就会出现 <EOF> 的字样!代表结束!
job 4 at 2009-03-14 15:38
# 上面这行资讯在说明,第 4 个 at 工作将在 2009/03/14 的 15:38 进行!
# 而运行 at 会进入所谓的 at shell 环境,让你下达多重命令等待运行!

范例二:将上述的第 4 项工作内容列出来查阅
[root@www ~]# at -c 4
#!/bin/sh <==就是透过 bash shell 的啦!
# atrun uid=0 gid=0
# mail root 0
umask 22
....(中间省略许多的环境变量项目)....
cd /root { <==可以看出,会到下达 at 时的工作目录去运行命令
echo 'Execution directory inaccessible' >&2
exit 1
}

/bin/mail root -s "testing at job" < /root/.bashrc
# 你可以看到命令运行的目录 (/root),还有多个环境变量与实际的命令内容啦!

范例三:由於机房预计於 2009/03/18 停电,我想要在 2009/03/17 23:00 关机?
[root@www ~]# at 23:00 2009-03-17
at> /bin/sync
at> /bin/sync
at> /sbin/shutdown -h now
at> <EOT>
job 5 at 2009-03-17 23:00
# 您瞧瞧! at 还可以在一个工作内输入多个命令呢!不错吧!


评论