Linux 使用 crontab 创建定时任务
541人浏览 / 0人评论
参考
crontab 的基本语法和表达式
Crontab 总共有 6 个字段。第 1-5个 字段是日期和时间,第 6 个字段可用于任何可执行的 Linux 命令或脚本。
如:0 2 * * *
就是每天两点执行一次。
Minute | hour | Day-of-Month | Month-of-Year | Day-of-Week | Command |
0-59 | 0-23 | 1-31 | 1-12(或英文缩写Jan、Feb等) | 0-6(0为周日;或单词缩写Sun、Mon等) | command / script |
基本语法
# 启动 cron
systemctl start crond
# 添加/修改任务
crontab -e
# 查看当前登录用户的任务
crontab -l
# 以其他用户的身份添加/修改任务(该命令只能由高权限用户执行,比如 “root用户或超级用户”,或者被赋予了特权的普通用户)
crontab -u user1 -e
# 查看其他用的任务
crontab -u user1 -l
常用表达式
# 每分钟执行一次
* * * * * 或 */1 * * * *
# 每十分钟执行一次
*/10 * * * *
# 每天六点和八点各执行一次
0 6,20 * * *
# 每周五晚上十一点执行一次
0 23 * 5 *
# 一行中连续执行多个任务(‘&&’意味着作业将一个接一个地执行,而‘;’则表示无论前面的作业是否成功,第二或第三作业都将运行)
0 1 * * * /usr/scripts/mysqldump.sh && /usr/scripts/application_backup.sh && /usr/scripts/tar_db_appfile.sh && /usr/scripts/cp_tar_remote_server.sh && /usr/scripts/tardelete.sh && /usr/scripts/clean_tmp.sh
或者
0 1 * * * /usr/scripts/mysqldump.sh; /usr/scripts/application_backup.sh; /usr/scripts/tar_db_appfile.sh; /usr/scripts/cp_tar_remote_server.sh; /usr/scripts/tardelete.sh; /usr/scripts/clean_tmp.sh
常用操作
在 cron 中使用特殊字符
关键字 | 等价于 | 含义 |
---|---|---|
@yearly | 0 0 1 1 * | 每年执行一次 |
@monthly | 0 0 1 * * | 每月执行一次 |
@daily | 0 0 * * * | 每天执行一次 |
@hourly | 0 * * * * | 每小时执行一次 |
@reboot | 重启后执行一次 |
秒级任务
每三秒执行一次
参考:https://www.cnblogs.com/52php/p/5675793.html
执行 crontab -e
添加如下内容:
*/1 * * * * sleep 3 && echo "3" >> /root/cron/test.txt
*/1 * * * * sleep 6 && echo "6" >> /root/cron/test.txt
*/1 * * * * sleep 9 && echo "9" >> /root/cron/test.txt
*/1 * * * * sleep 12 && echo "12" >> /root/cron/test.txt
*/1 * * * * sleep 15 && echo "15" >> /root/cron/test.txt
*/1 * * * * sleep 18 && echo "18" >> /root/cron/test.txt
*/1 * * * * sleep 21 && echo "21" >> /root/cron/test.txt
*/1 * * * * sleep 24 && echo "24" >> /root/cron/test.txt
*/1 * * * * sleep 27 && echo "27" >> /root/cron/test.txt
*/1 * * * * sleep 30 && echo "30" >> /root/cron/test.txt
*/1 * * * * sleep 33 && echo "33" >> /root/cron/test.txt
*/1 * * * * sleep 36 && echo "36" >> /root/cron/test.txt
*/1 * * * * sleep 39 && echo "39" >> /root/cron/test.txt
*/1 * * * * sleep 42 && echo "42" >> /root/cron/test.txt
*/1 * * * * sleep 45 && echo "45" >> /root/cron/test.txt
*/1 * * * * sleep 48 && echo "48" >> /root/cron/test.txt
*/1 * * * * sleep 51 && echo "51" >> /root/cron/test.txt
*/1 * * * * sleep 54 && echo "54" >> /root/cron/test.txt
*/1 * * * * sleep 57 && echo "57" >> /root/cron/test.txt
*/1 * * * * echo "60" >> /root/cron/test.txt
# 或者使用 && 连接到一行
*/1 * * * * echo "60" >> /root/cron/test.txt && sleep 3 && echo "3" >> /root/cron/test.txt && sleep 6 && echo "6" >> /root/cron/test.txt && sleep 9 && echo "9" >> /root/cron/test.txt && sleep 12 && echo "12" >> /root/cron/test.txt && sleep 15 && echo "15" >> /root/cron/test.txt && sleep 18 && echo "18" >> /root/cron/test.txt && sleep 21 && echo "21" >> /root/cron/test.txt && sleep 24 && echo "24" >> /root/cron/test.txt && sleep 27 && echo "27" >> /root/cron/test.txt && sleep 30 && echo "30" >> /root/cron/test.txt && sleep 33 && echo "33" >> /root/cron/test.txt && sleep 36 && echo "36" >> /root/cron/test.txt && sleep 39 && echo "39" >> /root/cron/test.txt && sleep 42 && echo "42" >> /root/cron/test.txt && sleep 45 && echo "45" >> /root/cron/test.txt && sleep 48 && echo "48" >> /root/cron/test.txt && sleep 51 && echo "51" >> /root/cron/test.txt && sleep 54 && echo "54" >> /root/cron/test.txt && sleep 57 && echo "57" >> /root/cron/test.txt
全部评论