我將包含要獲取的變量的文件路徑作爲參數傳遞給我的Bash腳本。 該文件是在Windows上創建的,以防有什麼區別。執行Cron作業沒有「看到」文件
下列檢查:
CONFIG_FILE=$1
if [[ -f ${CONFIG_FILE} ]]; then
echo "Is a file"
. ${CONFIG_FILE}
else
echo "Not a file"
fi
當我手動運行該腳本,在命令行中,檢查是好的,變量會馬上來源。
然而,當我設置使用
*/1 * * * * /full/path/to/script.sh /full/path/to/configfile
cron作業,我得到「不是一個文件」打印出來。
我嘗試每一個設置我在網上找到解決這個:
- 設置都在crontab中和腳本本身的環境變量(PATH & SHELL)
- 採購輪廓(包括的/ etc /配置文件和。/home/user/.bash_profile)都在crontab中(執行腳本之前)和腳本本身。
- 嘗試與-u用戶參數運行的crontab,但沒有權限爲這個(和它沒有任何意義,因爲我已經登錄的用戶誰應設置在crontab)
我正在設置腳本應該運行的正確用戶的crontab。用戶有權訪問文件的位置(可以通過從命令行運行腳本來觀察)。
尋找關於接下來可以嘗試什麼的進一步建議。
'-q'是'script.sh'的一個選項,我們無法弄清楚它在沒有訪問源的情況下做了什麼。 – tripleee 2015-01-21 12:21:04
@tripleee,'-q'不相關,腳本從不解釋它。在cron行中,它只是確保配置文件參數不是行中的最後一個參數,所以這個文件參數沒有'\ r'。 – 2015-01-21 12:32:14
@KarelKubat這是一個很好的猜測,但不過猜測。我們無法看到腳本的完整來源。 – tripleee 2015-01-21 12:59:36