【问题标题】:Using qsub within crontab?在 crontab 中使用 qsub?
【发布时间】:2021-03-24 16:46:42
【问题描述】:

我正在尝试在 crontab 中 qsub 一个脚本。在 crontab txt 文件中,我尝试了:

    0 1 * * * qsub /script.sh

我得到的错误是“/bin/sh: qsub: command not found。” 我已经尝试了一堆类似的迭代,并在网上四处寻找,但没有成功。如有任何帮助,我将不胜感激。

【问题讨论】:

    标签: bash crontab


    【解决方案1】:

    cron 下执行的程序使用一组有限的环境变量运行。特别是,由于它不读取您的 shell 启动文件(.bashrc.profile.cshrc,无论如何),它不会有您的 $PATH 设置; $PATH 很可能是像 /usr/bin:/bin 这样简单的东西。

    您可以像这样为单个命令设置 PATH:

    0 1 * * * PATH=/directory/containing/qsub:/usr/bin:/bin qsub /script.sh
    

    还可以全局设置环境变量;此类设置将应用于从您的crontab 执行的所有命令:

    PATH=/directory/containing/qsub:/usr/bin:/bin
    
    0 1 * * * qsub /script.sh
    

    man 5 crontab,或参阅here,了解有关编写 crontab 的更多信息。

    如果您想查看 cron 作业的环境是什么样的,您可以暂时将此行添加到您的 crontab:

    * * * * * printenv > cron-env
    

    等到下一分钟,然后cat ~/cron-env -- 然后从您的 crontab 中删除该行,这样它就不会继续执行。

    (你的脚本真的在根目录吗?为什么不在你的主目录下?)

    【讨论】:

    • 感谢我使用您的建议使其工作。我的 qsub 在 /usr/local/bin/ 中。对我有用的命令是 0 1 * * * PATH=/usr/local/bin:/usr/bin:/bin qsub /scriptpath/script.sh。另外,我的脚本没有存储在我的根目录中。感谢您的帮助!
    【解决方案2】:

    对我有用的方法是我首先在 /etc/profile.d/sge.sh 下获取 sge.sh

    那么 crontab 就会得到正确的环境变量,并且能够在 crontab 下运行 qsub。

    【讨论】:

      猜你喜欢
      • 2013-07-30
      • 1970-01-01
      • 2021-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-14
      • 2012-10-09
      相关资源
      最近更新 更多