cronjobコマンドでログファイルにタイムスタンプを追加する

cronjobコマンドでログファイルにタイムスタンプを追加する

git pullコマンドを実行し、5分ごとに出力メッセージをファイルに書き込んでみました。

しかし、このエラーが発生しました。

(root) CMD (cd /var/www/sites/ && git pull origin master | sed -e "s/^/$(date +\")
(CRON) error (grandchild #1111 failed with exit status 2)

私のcronjobコマンドは次のとおりです。

*/5 * * * * cd /var/www/site/ && git pull origin master | sed -e "s/^/$(date +\"%d-%m-%y\ %T\"), /" >> /var/log/crond/site.log

どうすれば修正できますか?

ベストアンサー1

一部のシステムでは、aは%crontabで特別です。私のシステムのcrontab(5)から

「6番目」フィールド(行の残りの部分)は、実行するコマンドを指定します。行の完全なコマンド部分(改行または「%」文字まで)は、SHELL変数/ bin / shまたはcronfileで指定されたシェルによって実行されます。 バックスラッシュ(\)でエスケープしない限り、コマンドの「%」文字は改行文字に変更され、最初の%以降のすべてのデータは標準入力としてコマンドに送信されます。

強く日付形式が推奨され、%Y-%m-%dそれだけではありません。標準、これは語彙順と年代順に等しくソートされます。一部のstrftime実装には、次の短縮語があります。%F

システムに次のものがあることを確認してください。ts注文する

cd /dir && git pull origin master 2>&1 | ts "\%F \%T" >> /var/log/crond/site.log

「リアルタイム」タイムスタンプを取得するには、次のコマンドをバッファリング解除する必要があります。 (本当に見苦しくなり始めます。)

cd /dir && stdbuf -oL sh -c 'git pull origin master 2>&1' | ts "\%F \%T" >> /var/log/crond/site.log

おすすめ記事