2017-11-13 11 views
0

VPS에서 루트 사용자로 다음 cronjob을 설정했습니다. 루트 사용자로 실행해도 명령 자체가 작동합니다.Cronjob이 루트 사용자로 실행되지 않음

30 2 * * * service nginx stop && /opt/letsencrypt/letsencrypt-auto renew && service nginx start > /dev/null 

그러나 SSL 인증서가 갱신되지 않고있는 것을 볼 수 있기 때문에 작동하지 않습니다.

내가 cat /var/log/cron을 실행하면 나는 그것을 실행 나타 내기 위해 보이지만 명확하게 돼있 무엇을 수행하지 않은 다음

Nov 13 02:30:01 server CROND[2307]: (root) CMD (service nginx stop && /opt/letsencrypt/letsencrypt-auto renew && service nginx start > /dev/null) 

을 볼 수 있습니다.

정상적인 사용자의 다른 cronjobs는 정상적으로 작동하지만 나는이 cron에 대해 Nginx를 일시적으로 중지해야하므로 crons에 해당 사용자를 사용할 수 없습니다.

내가 어떻게 더 디버깅하고 정렬 할 수 있는지에 대한 아이디어가 있습니까?

는 * 편집 : *

내가 로그인 할 때 그것을 실행 시도하고 다음과 같은 오류가 문제가 service 명령은 크론 PATH에 내가 없었 한 것을 로그 /bin/sh: service: command not found

+0

/dev/null 대신 로그 파일에 직접 출력. 너는 무엇을 얻 느냐? – TurtlesAllTheWayDown

+0

@TurtlesAllTheWayDown 내 편집을 참조하십시오. – Shiv

+0

결합 된 출력을 로그 파일로 재지 정하려면 명령리스트를} 호로 -어야합니다. –

답변

0

에 나타내었다 /sbin/service 인 전체 경로를 사용하십시오. 내 최종 cron 명령을 의미

지금 노력하고 있습니다

30 2 * * * (/sbin/service nginx stop && /opt/letsencrypt/letsencrypt-auto renew && /sbin/service nginx start) > /dev/null 2>&1 

했다.

일반적으로 모든 셸 명령의 전체 경로를 지정하는 것이 가장 좋습니다.