我有一個sh腳本,我希望通過cron每三個小時調用一次。該腳本調用一堆node.js腳本,並在直接調用時完美工作。但是,當通過cron調用時,我得到的是由sh腳本記錄的日期,但是沒有其他日誌來自我的node.js腳本(當sh直接調用時,所有日誌都會記錄)。任何想法爲什麼?Crontab和sh腳本
該腳本位於內部目錄中,但我使用的是全部絕對路徑。請在下面找到我的代碼,並在Github上注意node.js的更多細節(注意:服務器最近從sh更改爲bash,但我認爲這不會有任何實際影響)。
crontab的
SHELL=/bin/sh
[email protected]
0 */3 * * * /absolute/path/to/script.sh
script.sh
#!/usr/bin/env sh
node /absolute/path/to/script1.js
node /absolute/path/to/script2.js
node /absolute/path/to/script3.js
LOGFILE=/absolute/path/to/error.log
log(){
message="[email protected]"
echo $message
echo $message >>$LOGFILE
}
log "Cron performed $(date)"
來自crond的PATH一定不能用於您的節點命令 –
不要這樣認爲。如果我用直接從'crontab -e'複製的路徑調用'bash/absolute/path/to/script.sh',它可以正常工作。 – Primus202
嘗試指定'node'的完整路徑。 – choroba