Cron.hourly 不会运行

Swi*_*ick 63 command-line crontab cron-jobs cron

好的,所以我已经制作了脚本,/etc/cron.hourly然后将其放入chmod 777文件中,但它不会(自动)运行。如果我手动运行它,它工作正常。我还需要做什么吗?

Dai*_*hiF 167

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

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

将作业添加到/etc/cron.hourly( 或.daily.weekly等) 时,请务必在之后run-parts通过发出以下命令进行测试,以实际运行它:

run-parts --test /etc/cron.hourly
Run Code Online (Sandbox Code Playgroud)

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

你的剧本叫什么名字?

  • 正确,不好:) [a-zA-Z0-9_-] 是有效字符,所以 '.' 使其无效。这就是我上面所说的“给你的脚本一个扩展名会使其无效”的意思 (23认同)
  • oMG,这只是节省了一个巨大的头痛。谢谢你!```给你的脚本一个扩展名将使它无效并导致作业无法运行``` (13认同)
  • 这非常烦人,特别是因为“cron.hourly”目录的名称中有一个点,这表明点是可以的 (3认同)
  • 感谢您提供此信息。我的问题是脚本不可执行,`chmod +x /etc/cron.hourly/myscript` 成功了,`run-parts` 按预期列出了它。 (2认同)
  • 用户体验的基本原则是“不要让用户感到惊讶”。到底为什么会出现一个 . 不是在运行部件下运行的内容的有效字符?什么样的无能开发商才会做出这样的选择呢? (2认同)

oli*_*206 12

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

# m h dom mon dow user  command
* */1  * * *   user    command
Run Code Online (Sandbox Code Playgroud)

  • 我非常感谢下一个答案,因为它解决了 cron.hourly 的问题,而不是找到解决方法。 (10认同)
  • 如果机器不是一直在运行,使用 `cron.daily` 和朋友会更好地工作,因为 anacron 会尝试近似正确的时间表,而如果机器不是整晚都在运行,普通的 cron 将不会运行它们。对于小时工来说,这可能无关紧要。 (7认同)
  • 这不是问题的答案 (5认同)

Cry*_*vok 5

您的问题可能归结为过度开放的权限,它允许任何人编辑您的文件。试试吧755

查看系统日志输出中的 cron 条目应该可以确认这一点。


小智 5

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

另外,我的脚本#!/bin/bash在第一行中没有。即使可以使用命令行执行脚本,也run-parts拒绝它说“执行格式错误”。

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