【问题标题】:El Capitan: CRON Job is unable to trigger a shell scriptEl Capitan:CRON 作业无法触发 shell 脚本
【发布时间】:2017-04-09 23:05:59
【问题描述】:
*/10 * * * * /bin/sh /dataScience/dat/JOB/forker.sh

上面是不执行的 cron 作业。我已经分别检查了 cron 作业和运行正常的 shell 脚本的功能。甚至下面的命令也能正常工作。

/bin/sh /dataScience/dat/JOB/forker.sh

我还检查了forker.sh 的权限,显示

-rwxr-xr-x  1 mango  wheel   442 Nov 20 12:53 forker.sh

我是否遗漏了一些限制 cron 作业触发脚本的内容?

【问题讨论】:

  • 你怎么知道cron作业没有执行?脚本中的子命令没有运行吗?通过cron 运行时检查脚本内PATH 变量的值。还要确保您要使用sh 而不是bash 运行它。在您使用sh 运行的脚本中不应有任何bash 特定代码(AKA bashism)...此外,鉴于/dataScience 是非标准路径,它是否需要任何NFS/磁盘安装?
  • forker.sh 将内容输出到文件中。但是,如果您认为命令/逻辑失败。命令的第一行将当前日期插入到我也看不到的日志文件中。为了确定我想使用sh,我使用了/bin/sh并调用了脚本文件。
  • 如何识别 bash 特定代码? /dataScience 是在主磁盘上创建的文件夹,不需要任何特定的挂载。
  • 在 bash 中添加了一些(阅读:许多)语法,这些语法不是传统 bourne shell (sh) 的一部分。您可以通过将脚本粘贴到shellcheck.net 以及在开始时添加#!/bin/sh 行来检查...或者,有syntastic 项目的编辑器插件,可以与在线工具一样工作。

标签: bash macos shell cron sh


【解决方案1】:

作业的一般语法如下:

分时dom月dow用户cmd

在您的情况下,该工作可能是针对多个用户的,似乎

*/10 * * * * /bin/sh /dataScience/dat/JOB/forker.sh

这意味着它应该始终以 10 分钟的间隔运行。这没有问题。

您能否告诉我们以下内容是否为您提供了输出?

*/10 * * * * (echo "Printing."; echo "Logging." > /dataScience/dat/JOB/abc.txt | mail -s "Mailing" your_email)

注意:我想对此发表评论,因为这不完全是答案,而是调试,但我的声誉低于 50,因此无法发表评论。

【讨论】:

  • 命令成功,但我在abc.txt 文件中只看到Logging。 mangos-Mac:JOB mango$ ls abc.txt genD genD_BKP forker.sh genD.log tst.sh mangos-Mac:JOB mango$ cat abc.txt 日志记录。
  • 这似乎不是 cron 的问题,而是权限问题,因为其他守护进程使用 cron 运行。在这方面还有其他帮助吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-27
  • 2022-12-09
  • 2016-12-04
  • 2013-03-16
  • 2016-11-22
  • 2016-11-07
  • 1970-01-01
相关资源
最近更新 更多