Linux 使用 crontab 创建定时任务

541人浏览 / 0人评论

参考

Linux中cron命令的16个基础用法及示例-linux中find命令的用法 (51cto.com)

cron用法 (bbsmax.com)

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

全部评论