web-dev-qa-db-ja.com

cronジョブがログファイルに書き込んでいません

実行時に日付をログファイルに書き込むシェルスクリプトがあります。スクリプトを手動で実行すると、正しい出力がファイルに書き込まれます。ただし、これは自動化する必要があり、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

どんな助けでもいただければ幸いです!

1
N.M.D

シェルスクリプトは、ログファイルのフルパスを使用する必要があります。

#/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"
4
glenn jackman

ユーザーcrontabの場合、crontab(5)のマニュアルページに次のフィールドが記述されています。

各行には5つの時刻と日付のフィールドがあり、その後にシステムcrontabファイルの場合はユーザー名が続き、その後にコマンドが続きます。

したがって、あなたの場合、これが必要になります。

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

cronが出力とstderrをジョブ(存在する場合)から電子メールで送信することに注意する必要があります。そのため、おそらくcronコマンドTomcatが見つかりません。 (または、可能であれば、そのTomcatは行の残りの部分を理解しません。)

0
roaima