【发布时间】:2017-01-30 13:58:05
【问题描述】:
我的 qsub 位于 SGE。因此,通过 cronjob 运行 sh 脚本时,出现错误:qsub: command not found。 当前设置的路径是: PATH=/usr/bin:/bin
【问题讨论】:
标签: shell cron sungridengine
我的 qsub 位于 SGE。因此,通过 cronjob 运行 sh 脚本时,出现错误:qsub: command not found。 当前设置的路径是: PATH=/usr/bin:/bin
【问题讨论】:
标签: shell cron sungridengine
您可以设置路径或使用@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。)
【讨论】:
您可以在脚本开头设置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
【讨论】:
SGE_ROOT=... ; export PATH SGE_ROOT。
添加完整的PATH 后qsub
你可以找到SGE_ROOT并将其添加到crontab
这样写crontab:
SGE_ROOT=<root_name>
PATH= xxxxxxxx
【讨论】: