Cron
當我的 cronjob 執行時,如何將某些消息記錄到日誌文件中?
如果我的 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
而不僅僅是Ran Cronjob XY獎金:
如果命令執行成功,則顯示如何列印“執行成功”,否則如何列印“失敗”。
if some_command >/dev/null 2>&1; then echo ran successfully else echo failed fi >>logfile
上面的程式碼將執行命令
some_command
,丟棄其輸出,然後如果命令成功完成,則將文本附加ran successfully
到文件中。logfile
如果命令失敗,它會將文本附加failed
到logfile
.在您的情況下,為簡單起見(因為您的命令中有很長的路徑名),我會將其放在它自己的包裝腳本中,並使用 cron 作業執行該腳本。
腳本看起來像
#!/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 條目中使用:
* * * * * 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
…
* * * * *
應該由實際時間表替換。