2017-01-30 20 views

回答

0

您可以在脚本的开始处设置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 
+0

我根据你的建议设置PATH,但是它给了我错误:请设置环境变量SGE_ROOT。当我设置这个变量时,它给了我e虽然我给了正确的道路,但是与这条道路相关的错误。 – Dharmendra

+0

@Dharmendra也许这个变量需要导出?使用'SGE_ROOT = ...;在开始的脚本中导出PATH SGE_ROOT'。 – Jens

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)。