cronjobが実行されると、ログファイルに「Ran Cronjob XY」メッセージを書き込もうとします。
試み:
/opt/cpanel/ea-php73/root/usr/bin/php /home/company/example.de/bin/magento list 2>&1 | grep -v "Ran Cronjob XY" >> /home/company/example.de/var/log/test.cron.log
ただし、これは失敗し、コマンドの出力を記録します/opt/cpanel/ea-php73/root/usr/bin/php /home/company/example.de/bin/magento list
。Cronjob XYを実行しました。
ボーナス:
コマンドが正常に実行された場合は「成功した実行」を印刷し、それ以外の場合は「失敗」を印刷する方法を示します。
答え1
if some_command >/dev/null 2>&1; then
echo ran successfully
else
echo failed
fi >>logfile
上記のコードはコマンドを実行し、出力を削除し、コマンドが正常に完了するとファイルにsome_command
テキストを追加します。コマンドが失敗した場合、テキストは。ran successfully
logfile
failed
logfile
あなたの場合は、単純化のために(コマンドに長いパス名があるので)それを独自のラッパースクリプトに入れて実行します。それクローン操作を含むスクリプト。
スクリプトは次のとおりです。
#!/bin/sh
PATH=/opt/cpanel/ea-php73/root/usr/bin:$PATH
logfile=/home/company/example.de/var/log/test.cron.log
if php /home/company/example.de/bin/magento list >/dev/null 2>&1
then
echo ran successfully
else
echo failed
fi >>"$logfile"
絶対パスなしで実行PATH
できるようにスクリプトを修正しました。php
その後、スクリプトが予約されます。
* * * * * /path/to/thescript.sh
...* * * * *
実際のスケジュールに置き換える必要があります。
crontabエントリで直接使用するために「1行」に置き換えるには、次の手順を実行します。
* * * * * if /opt/cpanel/ea-php73/root/usr/bin/php /home/company/example.de/bin/magento list >/dev/null 2>&1; then echo ran successfully; else echo failed; fi >>/home/company/example.de/var/log/test.cron.log
...* * * * *
実際のスケジュールに置き換える必要があります。
答え2
最初のコマンドが正常に実行されたら、ログファイルにメッセージを表示したいようです。この場合、&&
パイプの代わりに二重&記号を使用できます|
。
/opt/cpanel/ea-php73/root/usr/bin/php /home/company/example.de/bin/magento list 2>&1 && echo "Ran Cronjob XY" >> /home/company/example.de/var/log/test.cron.log