linux定时任务crontab的使用

发布时间 2023-10-17 16:28:19作者: 码农骆驼

linux cron是不到秒的。

crontab参数列表
-e #编辑定时任务
-l #查看定时任务(其实没用,相当于cat)
-r #删除定时任务
-u #指定其他用户

常用的是crontab -e;表示编辑定时任务。

crontab -e 和 vim /etc/crontab的区别
这两种都是编辑定时任务文件。
crontab -e 相当于 cd /var/spool/cron/; vim root; 编辑的是当前用户的定时任务,一般用这种即可
vim /etc/crontab; 编辑的是系统的定时任务,一般用不到。

编辑完定时任务重启什么吗
不需要,因为保存就会自动刷新定时任务。

定时任务是否生效,查看日志
/var/log/cron 这个是定时任务的日志文件,可以查看

tail -100f /var/log/cron

定时任务表达是常用例子

* * * * * # 每分钟执行一次
00 02 * * * # 每天2点执行一次
00 02 * * * ls #每天的凌晨2点整执行
00 02 1 * * ls #每月的1日的凌晨2点整执行
00 02 14 2 * ls #每年的2月14日凌晨2点执行
00 02 * * 7 ls #每周天的凌晨2点整执行
00 02 * 6 5 ls #每年的6月周五凌晨2点执行
00 02 14 * 7 ls #每月14日或每周日的凌晨2点都执行
00 02 14 2 7 ls #每年的2月14日或每年2月的周天的凌晨2点执行
*/10 02 * * * ls #每天凌晨2点,每隔10分钟执行一次
* * * * * ls #每分钟都执行
00 00 14 2 * ls #每年2月14日的凌晨执行命令
*/5 * * * * ls #每隔5分钟执行一次
00 02 * 1,5,8 * ls #每年的1月5月8月凌晨2点执行
00 02 1-8 * * ls #每月1号到8号凌晨2点执行
0 21 * * * ls #每天晚上21:00执行
45 4 1,10,22 * * ls #每月的1,10,22号的4:45执行
45 4 1-10 * * ls #每月的1到10号的4:45执行
3,15 8-11 */2 * * ls #每隔两天的上午8点到11点的第3和第15分钟执行
0 23-7/1 * * * ls #晚上11点到早上7点之间,每隔一个小时执行
15 21 * * 1-5 ls #周一到周五每天晚上21:15执行

 

mv命令失败了也会删掉原文件吗
find /data/logs -mtime +3 -name "*.log" -exec mv -f {} /root/logs \;
1
实测如果mv到的文件不存在,原文件也会删除掉

bash脚本中两条命令会影响吗
要看什么命令,一般情况下不会。
例如mv命令就不会。

find 命令会影响吗,实测也不会。

find /root -maxdepth 1 -name "ccc.txt" -exec mv -f {} /root/logs/ \;
find /root -maxdepth 1 -name "a.log" -exec mv -f {} /root/logs/ \;
1
2
一个定时任务错误,会影响其他吗
find /root -mtime +3 -name "*.log" -exec mv {} /root/logs \;
1
实测如果2条命令之间没有相互依赖,不会影响的。

mv -f的作用
文件如果重复,默认会询问是否覆盖
-f force 表示不询问,直接覆盖。

cron为什么不显示日志
日志的默认文件是/var/log/cron,

用日志跟踪定时任务的执行情况
例如: 在定时任务执行时,添加date和文件名,并输出到日志。

test.sh内容:

dateStr=`date`; echo $dateStr "test.sh" ;
1
crontab 中添加:

# 每分钟执行一次,并记录到cron.log
* * * * * root /root/test.sh >> /var/log/cron.log 2>> /var/log/cron.log
1
2
其他几个默认的文件
/var/spool/cron/tmp cron的临时文件(不过为什么看不到呢)
/var/spool/mail/root 每个用户都在/var/spool/mail目录下生成用户名的文件夹(不过为什么看不到呢)

0/1 和 */1 的区别
当然是有区别的,例如想要每小时执行一次。

0 0/1 * * *
输出为:
第 1次执行 2022-09-11 00:00:00
第 2次执行 2022-09-12 00:00:00
第 3次执行 2022-09-13 00:00:00
第 4次执行 2022-09-14 00:00:00
效果为每天的0点执行一次。

0 */1 * * *
输出为:

执行序号 执行时间
第 1次执行 2022-09-10 18:00:00
第 2次执行 2022-09-10 19:00:00
第 3次执行 2022-09-10 20:00:00
第 4次执行 2022-09-10 21:00:00

很明显,这是想要的结果。
————————————————
版权声明:本文为CSDN博主「chushiyunen」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/enthan809882/article/details/104745179