woff 發表於 2022-10-29 21:03:29

Shell 手動執行成功,排程失敗

寫 Shell 一切都是為了省下更多時間,來更專注的處理手頭上的事情。
在完成腳本後不外乎反覆測試或嘗試各種可能,在手動執行確認內容執行後可以呈現所需。
卻在Crontab 排程執行卻失敗,重新審視內容後發現裡面有一條語法為了要取得客製化系統內的資訊。測試環境
[*]CentOS 6 Ubuntu 20.04(客製化環境)

解決辦法此次問題中最主要是在客製化系統中的,在使用者登入時會自動載入系統中。"/etc/profile", "~/.bash_profile"
當在 Crontab 執行 shell 指令其中帶有客製化指令,呈現結果會是失敗的。
因 Crontab 排程中執行是不會載入此使用者的資訊,故無法正確執行客製化系統中的語法。
所以在 shell 第二行加以下程式碼
source /etc/profile
讓語法在執行時可以正確帶入客製化指令。如果遇到其他無法執行的內容可往以下方案尋找
[*]呼叫其他檔案時是否有寫絕對路徑。
[*]檔案權限是否設定正確。
或是在 crontab -e 下
加入環境變數
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

頁: [1]
查看完整版本: Shell 手動執行成功,排程失敗