【问题标题】:How to set PATH of SGE in cronjob如何在 cronjob 中设置 SGE 的 PATH
【发布时间】:2017-01-30 13:58:05
【问题描述】:

我的 qsub 位于 SGE。因此,通过 cronjob 运行 sh 脚本时,出现错误:qsub: command not found。 当前设置的路径是: PATH=/usr/bin:/bin

【问题讨论】:

    标签: shell cron sungridengine


    【解决方案1】:

    您可以设置路径或使用@Jens 提到的qsub 的完整路径。

    但是,这种情况通常也意味着您的登录 shell 正在获取一个文件,该文件正在为您设置一堆环境变量(包括 SGE_ROOT)。当您的 cronjob 运行时,该文件没有被获取。因此,除了修复您的路径(或为qsub 提供完整路径)之外,您还需要找到该文件,然后在脚本的顶部,您需要获取该文件(或者通过并手动设置每个相关的环境变量)。

    在我的系统上,该文件位于/u/local/etc/profile.d/sge.sh(所以我只是将. /u/local/etc/profile.d/sge.sh 放在我的脚本顶部),但文件的位置因设置而异。您只需在登录时查找设置SGE_ROOT 的文件(以及其他几个相关的环境变量,例如SGE_ARCH)。

    (如果您很难找到它是哪个文件,您可能会发现这个答案很有用:https://unix.stackexchange.com/a/154971/157777。)

    【讨论】:

      【解决方案2】:

      您可以在脚本开头设置PATH,例如与

      #!/bin/sh
      PATH=$(/usr/bin/getconf PATH):/some/other/dir:/yet/another/dir
      ...rest of script...
      

      或修改 crontab 条目以提供增强的初始 PATH

      10 20 * * * PATH=/usr/bin:/bin:/some/other/dir:/yet/another/dir /path/to/script.sh
      

      【讨论】:

      • 我根据您的建议设置了 PATH,但它给了我错误:请设置环境变量 SGE_ROOT。当我设置这个变量时,虽然我给出了正确的路径,但它给了我与该路径相关的错误。
      • @Dharmendra 也许该变量需要导出?在脚本开头使用SGE_ROOT=... ; export PATH SGE_ROOT
      【解决方案3】:

      添加完整的PATHqsub 你可以找到SGE_ROOT并将其添加到crontab

      这样写crontab

      SGE_ROOT=<root_name>
      PATH= xxxxxxxx
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-02
        • 1970-01-01
        • 2019-03-14
        • 2012-04-10
        • 2013-06-30
        • 1970-01-01
        • 2014-04-11
        • 1970-01-01
        相关资源
        最近更新 更多