文章目录
- linux
- crontab参数列表
- crontab -e 和 vim /etc/crontab的区别
- 编辑完定时任务重启什么吗
- 定时任务是否生效,查看日志
- 定时任务表达是常用例子
- mv命令失败了也会删掉原文件吗
- bash脚本中两条命令会影响吗
- 一个定时任务错误,会影响其他吗
- mv -f的作用
- cron为什么不显示日志
- 用日志跟踪定时任务的执行情况
- 其他几个默认的文件
- 0/1 和 */1 的区别
- 0 0/1 * * *
- 0 */1 * * *
首先这里区分下,linux中cron和spring的cron是不一样的。
linux
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 \;
实测如果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/ \;
一个定时任务错误,会影响其他吗
find /root -mtime +3 -name "*.log" -exec mv {} /root/logs \;
实测如果2条命令之间没有相互依赖,不会影响的。
mv -f的作用
文件如果重复,默认会询问是否覆盖
-f force 表示不询问,直接覆盖。
cron为什么不显示日志
日志的默认文件是/var/log/cron,
用日志跟踪定时任务的执行情况
例如: 在定时任务执行时,添加date和文件名,并输出到日志。
test.sh内容:
dateStr=`date`; echo $dateStr "test.sh" ;
crontab 中添加:
# 每分钟执行一次,并记录到cron.log
* * * * * root /root/test.sh >> /var/log/cron.log 2>> /var/log/cron.log
其他几个默认的文件
/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
很明显,这是想要的结果。