有两个主要的工具用于执行计划任务,at 和 cron。如果您的计算机不是持续运行的,您可能也想尝试 anacron,因为 cron 只有在您的计算机保持开启状态时才会工作(anacron 可以在下次计算机开启时赶上计划的任务...)。
'at' 在特定的日期,在特定的时间执行一次命令。 at 将添加要执行的特定命令。
示例
at 21:30
然后您输入要执行的命令,然后按文件结束键(通常是 CTRL-D )。也可以尝试
at now + time
这将会在当前时间 + 您指定的小时/分钟/秒后运行(使用 at now + 1 hour 让命令在 1 小时后运行...)
您也可以使用 -f 选项让 at 执行特定的文件(shell脚本)。
at -f shell_script now + 1 hour
将列出当前在队列中等待执行的用户作业,如果 root 执行 at ,它将列出所有在队列中等待 at 守护进程的作业。不需要或接受任何选项。
命令语法
atrm job_no
cron 可以用于计划特定的功能,使其每分钟、每小时、每天、每周或每月发生。
通常使用 crontab 来执行编辑功能,因为这自动化了 cron 守护进程的过程,并使普通用户更容易使用 cron。
Anacron: anacron 是另一个为非持续运行的系统设计的工具,例如家用电脑
虽然 cron 在计算机关闭时不会运行,但 anacron 会在计算机下次开启时简单地运行命令(它会赶上进度)。
crontab 用于编辑、读取和删除 cron 守护进程读取的文件。
当使用 crontab -e 时,您有许多字段 (6) ,它们的含义列在下面
还有一些用于常见任务的快捷方法,包括:[1]
@yearly --- 与 0 0 1 1 * 相同
@annually --- 与 @yearly 相同
@monthly --- 与 0 0 1 * * 相同
@weekly --- 与 0 0 * * 0 相同
@daily --- 与 0 0 * * * 相同
@midnight --- 与 @daily 相同
@hourly --- 与 0 * * * * 相同
请注意,*(星号)用于表示任何内容(类似于通配符)。例如,如果您将日期部分(第 5 位)保留为星号,则表示每天。
允许使用列表。 列表是一组数字(或范围),用逗号分隔。 示例: ``1,2,5,9'',``0-4,8-12”。
步长值可以与范围结合使用。 在范围后加上 ``/<number>'' 指定以数字的值跳过范围。例如,``0-23/2'' 可以用于小时字段,以指定每隔一小时执行命令(V7 标准中的替代方法是 ``0,2,4,6,8,10,12,14,16,18,20,22'')。也允许在星号后使用步长,因此,如果您想说“每两小时”,只需使用 ``*/2''。
当编写 crontab 条目时,您只需输入六个字段,用空格分隔,前五个是表中列出的字段(使用数字或字母和数字,视情况而定),第 6 个字段是要执行的命令和任何选项,cron 将读取直到换行符的所有内容。
示例
5 4 * * sun echo "run at 5 after 4 every sunday"
[1] | 此信息来自 LinuxChix techtalk 邮件列表上的帖子(未经编辑),更多信息请参见参考书目中的 [16]。 |
[2] | 此信息来自 cron 手册页,并进行了一些小补充(未更改原始内容),更多信息请参考参考书目中的 [13]。 |