在Linux中crontab定时任务的20个实用例子

Linux中crontab的是类似Windows任务计划。 crontab是对于像定时调度扫描系统,每日备份等,crontab例行任务非常有用,在指定的时间间隔自动后台执行作业。调度一次性的任务,你可以在Linux中使用 at命令。 如果您没有您的系统中没有安装的crontab,参考文章  CentOS/RHEL中安装crontab 。

在Linux中的crontab格式

Linux的crontab中有六个字段。 1-5字段表示时间,第6个字段用于命令/脚本。 [Minute] [hour] [Day_of_the_Month] [Month_of_the_Year] [Day_of_the_Week] [command]

如何添加/编辑crontab

在crontab中添加或更新作业时,请使用以下命令。它将打开crontab文件在并添加/更新作业。
# crontab -e
默认情况下它会编辑当前用户登录的crontab。为了下面编辑其他用户的crontab使用如下命令
# crontab -u username -e
改变EDITOR环境变量来改变默认编辑器。

如何列出crontab作业列表

要查看当前用户crontab,使用以下命令。
# crontab -l
要查看其他用户crontab,使用以下命令。
# crontab -u username -l

20有用的crontab例子:

1. 安排一个cron在每天的凌晨2点执行。
这将每天调度数据库备份。
0 2 * * * /bin/sh backup.sh
2. 安排一个cron一天两次执行。
下面的示例中的命令将在凌晨5点和每天下午5点执行脚本。您可以用逗号分隔指定多个时间。
0 5,17 * * * /scripts/script.sh
3. 安排一个cron每分钟执行。
一般来说,我们不需要任何脚本每分钟都执行,但在某些情况下,你可能需要配置它。
* * * * *  /scripts/script.sh
4.安排一个cron每个星期日下午5点执行。
这种类型的cron做每周的任务是有用的。
0 17 * * sun  /scripts/script.sh
5. 安排一个cron在每10分钟执行。
如果您想在间隔10分钟运行脚本,可以配置如下所示。这些类型crons用于监测是有用的。
*/10 * * * * /scripts/monitor.sh
*/10:在每个10分钟。如果你想在每5分钟执行使用 */5。
6. 安排一个cron选定执行某几个月里每分钟执行执行。
选定某几个月要执行我们需要的计划任务。下面的示例脚本将在1月,5月和8月里的每分钟执行。
* * * jan,may,aug *  /script/script.sh
7. 安排一个cron来选定每周内完成。
如果你需要计划任务在唯一入选的周被执行。下面的例子将在每个星期日和星期五的下午5点运行。
0 17 * * sun,fri  /script/script.sh
8. 安排一个cron在每月的第一个星期日执行。
要安排一个脚本来执行的每月的第一个星期日来执行脚本,可以通过时间参数,我们可以在命令字段里增加条件去实现。
0 2 * * sun  [ $(date +%d) -le 07 ] && /script/script.sh
9. 安排一个cron在每四个小时执行。
如果你想在每4小时间隔运行脚本。它可以被配置像的下方。
0 */4 * * * /scripts/script.sh
10. 安排一个cron在每个星期日和星期一两次执行。
要安排在仅周日和周一两次执行任务。使用下面的设置来做到这一点。
0 4,17 * * sun,mon /scripts/script.sh
11.安排一个cron来执行每30秒。
计划任务每30秒执行,不可能通过时间参数来实现,但它我们可以通过进度相同的cron进行分两次来实现,如下所示。
* * * * * /scripts/script.sh
* * * * *  sleep 30; /scripts/script.sh
12. 单条cron上执行多任务。
配置多个任务在单个cron上,可以通过过分号 ; 任来增加多个任务。
* * * * * /scripts/script.sh; /scripts/scrit2.sh
13. 安排任务在每年执行(@yearly)。
@yearly时间戳等同于“0 0 1 1 *”。这将在每年的第一分钟开始执行任务,它可能用来送新年祝福 ?
@yearly /scripts/script.sh
14. 安排任务每月执行(@monthly)。
@monthly时间戳类似于“0 0 1 * *”。它将在本月的第一分钟开始执行任务。它可能用做每月支付账单和发票给客户的任务。
@monthly /scripts/script.sh
15. 安排任务每周执行(@weekly)。
@weekly时间戳类似于“0 0 1 * *”。它将在本月的第一分钟开始执行任务。它可能用做每周一次的任务,如系统等的清理
@weekly /bin/script.sh
16. 安排任务每天执行(@daily)。
@daily时间戳类似于“0 0 * * *”。它会在每天的第一分钟开始执行任务时,可以用做日常任务。
@daily /scripts/script.sh
17. 安排任务,以每小时执行(@hourly)。
@hourly时间戳类似于“0 * * * *”。它会在每隔一小时的第一分钟开始执行任务,可以用做每小时任务。
@hourly /scripts/script.sh
18. 安排任务在系统重新启动时执行(@reboot)。
@reboot是在你的系统启动时运行这些任务非常有用。它可以做为系统启动脚本。在后台自动启动任务是很有用的。
@reboot /scripts/script.sh
19. 重定向Cron结果指定的电子邮件帐户。
默认情况下cron的详细信息会发送到cron当前用户。如果你想将其重定向到其他帐户,可以通过设置邮件变量来实现如下所示
# crontab -l
MAIL=bob
0 2 * * * /script/backup.sh
20. 把所有crons的备份到纯文本文件。
我建议保持把所有作业信息备份在一个文件中。以便恢复crons作业任务。 检查当前的cron列表:
# crontab -l
MAIL=rahul
0 2 * * * /script/backup.sh
备份cron为文本文件:
# crontab -l > cron-backup.txt
# cat cron-backup.txt
MAIL=rahul
0 2 * * * /script/backup.sh
删除当前cron文件:
# crontab -r
# crontab -l
no crontab for root
从文本文件恢复crons:
# crontab cron-backup.txt
# crontab -l
MAIL=rahul
0 2 * * * /script/backup.sh
感谢您阅读这篇文章,我希望它会帮助你了解crontab的Linux中。调度一次性的任务,你也可以使用 at命令的Linux
赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏