【问题标题】:IBM AIX cron job does not executeIBM AIX cron 作业不执行
【发布时间】:2013-10-04 06:59:45
【问题描述】:

我在 IBM AIX 服务器上有一个 cron 作业,或多或少像这样安排:

0 6 * * * (date >> ~/executions.log;. ~/.profile; cd /usr/path/to/the/script; /usr/path/to/the/script/ThisIsTheScript.sh ) > /dev/null 2>&1

当我安排这样的测试运行时:

0,37 6 * * * (date >> ~/executions.log;. ~/.profile; cd /usr/path/to/the/script; /usr/path/to/the/script/ThisIsTheScript.sh ) > /dev/null 2>&1

...作业只会运行到将最后执行日期附加到~/executions.log 的部分。由于这个脚本调用了一个非常庞大的应用程序——我们称之为gargantuanprogram——一旦工作启动它应该出现在ps ax | grep gargantuanprogram。但它没有,它甚至没有运行ThisIsTheScript.sh,因为所述脚本在启动时会发送电子邮件通知,而在我的邮箱中我只是收到 nada。

如您所见,是的,我正在加载我的~/profile,我多次检查该脚本是否具有执行权限,并且我绝对确定该行编写正确。 crontab 也以换行符结束。那为什么作业没有执行呢?

【问题讨论】:

    标签: cron aix


    【解决方案1】:

    通常我所做的是我有一个有效的脚本。然后,我将该脚本与另一个脚本包装起来,为 cron 进行设置,例如源 .profile、重定向 stdout 和 stderr、记录错误等。我使 crontab 本身的条目非常简单和干净。它只是更容易处理和调试。

    通常有此类问题的人会在他们的 .profile 中添加一些内容,假设附加了一个控制 tty(如 stty 或类似的东西)。我的 .profiles 中的另一件事是能够打开跟踪,这样我就可以看到 .profile 加载在哪里死亡。使用“set -x”执行此操作。我实际上有一棵 .profiles 树,所以我在顶部设置了一个变量,如果设置了它,它会执行 set -x。

    shell 不会是交互式的,也没有控制 tty。这种情况很少见,并且经常混淆用户.profile 中的某些内容。 shell 可能是“sh”,它可能与 /bin/ksh 有一些细微的差别,尽管它不应该这样。

    希望对你有帮助

    【讨论】:

    • 连续用头撞桌子一个小时后,我终于找到了原因。原因?...我认为我应该像 crontab 中的其他脚本一样调用没有参数的脚本,但是不,这一次我不得不用一个特殊的参数调用它。这项工作很好地完成了,我放置的脚手架实际上也很好,只是脚本没有按应有的方式调用。
    • 所以基本上,吸取的教训是始终确保我是否真的应该这样调用脚本。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多