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 항목에서 직접 사용하기 위해 "한 줄짜리"로 바꾸려면 다음을 수행하십시오.
* * * * * 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