実行時にログファイルに日付を記録するシェルスクリプトがあります。スクリプトを手動で実行すると、正しい出力がファイルに書き込まれます。しかし、これは自動化されなければならず、cronジョブとして実行するとファイルに何も書き込まれず、その理由が混乱しています。
予約されたもの:
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
どんな助けでも大変感謝します!
答え1
シェルスクリプトにはログファイルへのフルパスが必要です。
#/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"
答え2
ユーザーの場合、crontab
マニュアルページではcrontab(5)
次のフィールドについて説明します。
各行には5つの時間と日付フィールドがあり、その後にシステムcrontabファイルがある場合は、ユーザー名とコマンドが続きます。
したがって、あなたの場合は、次のようなことをしたいと思います。
0 * * * * /usr/bin/sh /apps/rdsreplication/snap_replication.sh
cron
結果が電子メールで送信されることに注意してください。標準エラーcron
職場で(存在する場合)コマンドが見つからないという電子メールがたくさん届きましたtomcat
。 (または可能であれば、tomcat
残りの行を理解できません。)