2017-01-30 74 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)。