Cron.hourly 不会运行

Cron.hourly 不会运行

好的,我已经编写了脚本,我将其放入/etc/cron.hourly文件chmod 777,但它不会(自动)运行。如果我手动运行它,它会正常工作。我还需要做其他事情吗?

答案1

中的条目cron.hourly由运行部分机制运行(man run-parts了解更多信息)。并且run-parts会挑剔它认为有效的文件名。

例如,为您的脚本提供扩展名将使其无效并导致作业无法运行。[a-zA-Z0-9_-]是有效字符,因此“。”使其无效。

/etc/cron.hourly当向( 或.daily.weekly等)添加作业时,始终在之后run-parts通过发出命令来测试它是否真正运行:

run-parts --test /etc/cron.hourly

如果运行此命令后显示您的文件,则表示它已成功运行。否则,如果没有显示任何内容,则您的文件名无效。

你的剧本叫什么名字?

答案2

为什么不使用 crontab ( /etc/crontab ) 并在小时字段中使用 */1。我使用它每 5 分钟运行一次脚本,效果很好:

# m h dom mon dow user  command
* */1  * * *   user    command

答案3

DaithiF 的回答应该是正确的答案。

另外,我的脚本第一行没有#!/bin/bash。尽管可以使用命令行执行该脚本,但run-parts它被拒绝,并显示“执行格式错误”。

将文件名从 更改scriptname.shscriptname#!/bin/bash在第一行中添加 使我的脚本能够每小时运行一次。

答案4

就我而言,我犯了这些错误,导致cron.hourly无法执行我的脚本:

  1. 我忘了检查 crond 服务是否正在运行:systemctl status crond

  2. 我没有像其他文件夹中的 cron 脚本一样在脚本文件的末尾添加新的空行。

  3. 我在 Windows 上使用 WinSCP 创建了脚本文件,因此插入了类似 Windows 的 EOL 符号,而 cron 无法正确解释该符号。所以我需要执行它sed -i -e 's/\r$//' /etc/cron.hourly/myscript来修复它。

相关内容