crontab 未执行的问题

2023-03-27 16:16:18 +08:00
 sockball07

首先建立一个 2023 年 03 月 27 日 17:00 执行的脚本并保存
0 17 27 3 * /bin/sh /tmp/test.sh >> /tmp/test.log

假设当前时间还未到 17 点,现将系统时间改为 17:00
date -s '2023/03/27 17:00:00'

之后会按预期运行一次脚本
然后再将系统时间同步回当前时间
/usr/sbin/ntpdate ntp.sjtu.edu.cn

假设此时还未到 17:00
待到时间到达 17:00 时,脚本并未按预期执行,这是什么原因呢?

1787 次点击
所在节点    程序员
12 条回复
zeromovie
2023-03-27 16:18:43 +08:00
我之前遇到这个问题时脚本的解释器是 sh,我改成 bash 就好了
bruce0
2023-03-27 16:25:23 +08:00
看一下 /var/log/cron 的 log 呢
pollux
2023-03-27 16:42:18 +08:00
还有其它的可能性是环境变量和权限的问题,建议看看 log 或者 在脚本里输出一些 debug 信息到 /tmp 下(因为这个目录肯定是有权限的),看看真的有没有执行?
sockball07
2023-03-27 16:45:03 +08:00
@zeromovie #1 你这个就是另一个问题了,我这边实际上是别的任务,上面是随便写的(没想到 sh 还有别的问题...)

@bruce0 #2 没有这个文件😂
saleacy
2023-03-27 16:48:42 +08:00
date 没用绝对路径
Sekai
2023-03-27 17:06:41 +08:00
1. 语法错误:crontab 脚本中语法错误会导致脚本无法执行,需要检查语法错误并修正。

2. 环境变量问题:crontab 脚本执行时环境变量可能与手动执行时不同,需要在脚本中指定环境变量或者在 crontab 中设置环境变量。

3. 文件权限问题:crontab 脚本所在的目录或者脚本本身的权限可能不足以执行,需要检查并设置正确的权限。

4. 路径问题:crontab 脚本中使用的命令或者文件路径可能与实际不符,需要检查并修正。

5. 定时任务设置错误:crontab 定时任务设置错误会导致脚本无法执行,需要检查定时任务设置是否正确。

6. 系统服务问题:如果系统服务未正常运行,可能会导致 crontab 脚本无法执行,需要检查并修复系统服务。

7. 日志记录问题:crontab 脚本执行时可能会产生日志记录,需要检查日志记录是否正常并且是否有错误提示。
levenwindy
2023-03-27 17:11:35 +08:00
很多种可能
1.不同系统版本都有区别
/etc/crontab 这种是得写用户名
* * * * * root 命令
另一种
../crontabs/root 命令 (后面不需要加用户名)
2.有些版本最后一行不会执行,因此最后要空一行
3.命令的绝对路径
4.sh 和 bash 的区别

记得的就这些了,应该发到 linux 板块
之后排除法自己去测试每一步
jackyzy823
2023-03-27 17:11:53 +08:00
https://unix.stackexchange.com/questions/231209/cronjob-based-on-system-time-or-its-own-time-elapse

> Special considerations exist when the clock is changed by less than 3 hours, for example at the beginning and end of daylight savings time. If the time has moved forwards, those jobs which would have run in the time that was skipped will be run soon after the change. Conversely, if the time has moved backwards by less than 3 hours, those jobs that fall into the repeated time will not be re-run.
sockball07
2023-03-27 17:26:17 +08:00
@levenwindy #7 发贴少确实不知道往哪个板块发好...

@jackyzy823 #8 感谢,这样原因就清楚了,想解决的话只能重新编辑 crontab 咯
listenfree
2023-03-27 17:32:09 +08:00
Special considerations exist when the clock is changed by less than 3 hours, for example at the beginning and end of daylight savings time. If the time has
moved forwards, those jobs which would have run in the time that was skipped will be run soon after the change. Conversely, if the time has moved backwards by
less than 3 hours, those jobs that fall into the repeated time will not be re-run.
iooco
2023-03-28 10:00:11 +08:00
我发现通过 azure 控制台重启机器 cron 很大概率挂掉 必须 crontab -e 才能再次运行 状态依旧是 running
heywin
2023-03-28 12:04:34 +08:00
先看下系统收件箱有没有错误报告, 看下打开报告功能没.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/927587

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX