好吧,这就是我的问题,我最近更新了我的服务器并更改了一些用于自动发布公告的 jsp 文件。crontab 列出了所有 .sh 文件,.sh 文件运行 jsp 文件来显示公告。
更新完 jsp 文件后,我重新启动了服务器,从那时起,公告就停止运行了。我可以通过 putty 手动运行 .sh 文件,它们运行正常,所以我对 jsp 文件所做的更改不是问题所在。
在发帖之前我做了一些研究,并检查了系统日志中的 cron 条目。在我重启服务器之前,cron 服务一直正常运行。重启后,系统日志中没有 cron 条目。
我尝试过再次重启服务器,也尝试过重启 cron 服务,甚至尝试过完全停止服务然后重新启动,但都没有任何效果。我不明白为什么 cron 服务会突然停止工作,因为在更新服务器期间,与 cron 无关或任何操作文件都没有受到影响。
有人知道它停止工作的原因吗?我使用的是 Ubuntu Server 11.10
答案1
1. 记下所有用户(包括 root 用户)的所有 cron 任务, 例如:
列出 root 的 crontab
sudo crontab -l
列出你的 crontab
crontab -l
2. 使用以下命令删除所有用户的 crontab
删除 root 的 crontab
sudo crontab -r
删除你的 crontab
crontab -r
3. 重启系统
4. 将您的作业放回 cron(最好是 root 的 cron),方法是创建一个文本文件,然后将 cron 指向该文件或手动放置。
手动设置
sudo crontab -e
将 cron 指向文本文件
sudo crontab <filename>
从逻辑上讲,最好按发生顺序输入。例如,如果您有一个作业在另一个作业(按时间)之前运行,则将其放在上面。
请记住,cron 文件或 crontab 必须具有以下格式的条目
m h dom mon dow full path command
例如,除周末外,每周每天下午 2:30 关机
30 14 * * 2,3,4,5,6 /sbin/shutdown
另一个示例是每周一凌晨 2:00 运行脚本文件(test.sh - 位于 /usr/local/myScripts 文件夹中),如下所示
0 2 * * 2 /usr/local/myScripts/test.sh
我曾经遇到过与 cron 相同的问题,我记得在一个论坛上读到过,我们需要删除用户的 cron,然后重新启动系统,然后重新创建它。
答案2
如果您的脚本是从交互式终端运行而不是从 crontab 运行,那么这是典型的环境问题。
Cron 在几乎空的环境中运行你的程序。
在您的 crontab 中,尝试>/tmp/script.log 2>&1
在脚本末尾添加以捕获日志文件中的错误。
您还可以尝试运行脚本以env -i
确保它们在空环境下正常运行。(env -i /you/script.sh
)
您可能必须在 PATH 环境变量中添加一些条目。