Bash

Cron 作業未寫入日誌文件

  • March 2, 2017

我有一個 shell 腳本,它在執行時將日期寫入日誌文件。當我手動執行腳本時,正確的輸出被寫入文件。但是,這需要自動化,當我作為 cron 作業執行時,沒有任何內容寫入文件,我很困惑為什麼。

crontab:

0 * * * * tomcat /usr/bin/sh /apps/rdsreplication/snap_replication.sh

範常式式碼:

#/bin/bash/

echo ---------------------------------------- >> create_snap.txt
echo Start time:  >> create_snap.txt
date >> create_snap.txt

任何幫助,將不勝感激!

shell 腳本需要使用日誌文件的完整路徑:

#/bin/bash/
# assuming you want the txt file in the same directory as the bash script
logfile="$(dirname "$0")/create_snap.txt"
{
   echo ----------------------------------------
   echo Start time:
   date 
} >> "$logfile"

對於 user crontab,手冊頁crontab(5)描述了以下欄位:

每行有五個時間和日期欄位,如果這是系統 crontab 文件,則後跟一個使用者名,然後是一個命令。

所以在你的情況下,你會想要這個:

0 * * * * /usr/bin/sh /apps/rdsreplication/snap_replication.sh

您應該知道,cron它將通過電子郵件向您發送作業的輸出和標準錯誤(如果有),因此您可能有很多電子郵件告訴您cron找不到命令tomcat。(或者如果可以,那tomcat不理解該行的其餘部分。)

引用自:https://unix.stackexchange.com/questions/348719