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)에서
"여섯 번째" 필드(줄의 나머지 부분)는 실행할 명령을 지정합니다. 줄의 전체 명령 부분(개행 또는 "%" 문자까지)은 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