从crontab运行时,Shell脚本无法正常运行

时间:2018-07-19 17:24:32

标签: bash shell unix cron

我阅读了其他相关主题,但它们没有帮助我。

我有一个Shell脚本,它检查我的python脚本是否未运行,它将运行它。否则,它只会跳过而不执行任何操作。

当我使用时,它完全可以工作:     bash myshellscrip.sh 我得到了想要的结果,它正在执行一些任务并将电子邮件发送给某些通讯员。但是,当我尝试在crontab上运行此特定的Shell脚本时,它不会发送电子邮件,也不会执行其他任务。 我在crontab上尝试了以下方法,但没有一个起作用。

    * * * * * /bin/bash /path/to/my/script/myshellscrip.sh 
    * * * * * /bin/bash /path/to/my/script/myshellscrip.sh >> /some/other/path/output.txt

当我将更改保存到“ output.txt”文件中时,它会创建文件,但不会发送电子邮件或执行其他任务。

我还尝试了重新启动的选项,因为我也需要在启动时运行该程序,但这不起作用:

    @reboot /bin/bash /path/to/my/script/myshellscrip.sh

有人知道如何解决吗?

编辑:

当我检查最简单的shell脚本时:

    #!/bin/sh
    /usr/bin/python /home/pi/DCA/code.py

尽管我的code.py也有打印出的内容,但我的crontab在我的output.txt文件中没有任何输出。

但是,例如,当我使用非常简单的python代码时,仅会执行“ print”语句,它将运行并将输出保存到output.txt中。

3 个答案:

答案 0 :(得分:1)

似乎您的shell脚本在无法执行某些操作之前便崩溃了/停止了(可能是由于环境不同或权限问题所致)。您可以检查/var/log/syslog来找出答案。

您可以尝试删除/bin/bash,我认为这不是必需的吗?

答案 1 :(得分:0)

以调试模式运行cron作业。为此,请在cronjob的bash命令中添加@NonNull V value = map.compute(key, (k, v) -> { if (v == null) { return new V(); } v.increment(); return v; }); 并将其输出保存在文件中。

MATCH (q:Query {summary: "Looking for Japan GDP"})-[:FILTERED_BY]->(filter)
WITH filter, size((q)-[:FILTERED_BY]->()) as totalFilterCount
MATCH (r:Record)-[:GROUPED_BY]->(filter)
WITH r, count(filter) as matchedFilterCount, totalFilterCount
WHERE matchedFilterCount = totalFilterCount
RETURN r

您可以找到问题所在。

答案 2 :(得分:0)

显然crontab在运行我的脚本几次。因此,我尝试使用不同的锁定机制在我的股票上加锁,但只有使用flock才有效。在我的crontab中,我添加了以下行:

{{1}}