我有一个 bash 脚本,它通过 LSF 排队系统命令“bqueues”的输出来监视集群中的作业。该脚本运行良好。现在我想创建一个调用此脚本的 crontab 条目。问题是与 bqueues 相关的所有内容根本不产生输出,这可能是什么原因?
最佳答案
- Cron 作业不会继承用户的登录环境。具体来说,在 .login 或 .profile 等中设置的环境变量将不可用。 cron 作业失败的最常见原因绝对是 PATH 设置不是脚本编写者所假设的。
- Cron 作业没有与之关联的标准输入。虽然 cron 不会执行用户的 .login/.profile,但它会正常启动 shell - 从而导致执行 shell 的启动文件(.cshrc、.bashrc 等)。此外,cronjob 中使用的某些命令可能依赖于存在的终端。例如,如果您尝试以批处理模式启动“vi”,请不要这样做。而是将其替换为 ed 或 sed。
- Cron 作业输出将通过 Unix 邮件发送给 crontab 所有者
- 对 crontab 本身的权限。如果文件的权限设置不正确,许多 cron 实现甚至不会查看 crontab。一般来说,权限应该非常严格 - 所有者只能读/写,组或其他人没有权限。
- 通过从 shell 和 crontab 发出
env
来比较环境。 - ...
有关更多调试技巧,请参阅How to debug an issue of cron's not executing a given script -- or other?
关于bash - crontab 中 LSF 排队输出问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6371337/