아파치 crontab이 실행되지 않습니다


0

cron을 사용하여 일부 PHP 스크립트 (owncloud background 작업 등)를 실행합니다. 내 서버는 php-fpm을 통해 nginx와 PHP를 실행합니다. php-fpm은 기본적 으로 루트 이외의 apache쓰기 권한을 가진 유일한 사용자 인 PHP 프로세스를 실행 /var/www합니다. 따라서 이러한 백그라운드 작업을 아파치의 crontab에 추가하는 것이 좋습니다.

crontab -u apache -e

컨텐츠:

MAILTO=cron@localhost
*  *  *  *  * echo "..." | mail -s "crontest" cron@localhost

매분마다 메일을 보내야하지만 그렇지 않습니다. 아파치 사용자 ( sudo -s -u apache) 로 명령을 실행하면 정상적으로 작동하지만 cronjob은 실행되지 않습니다.

여기 에서 "잠금 계정"에 대한 언급을 찾았 지만 제안 된 솔루션이 좋은 아이디어인지 확실하지 않습니다.

답변:


1

나는 60 분이 분 열에서 유효하다고 생각하지 않습니다 (잘못되면 누군가가 나를 수정합니다). 숫자는 0에서 59 사이 여야합니다.

실제로 컴퓨터에 지시하는 것은 " echo "..." | mail -s "crontest" cron@localhost60 분마다 실행 "입니다. 매분마다 작업을 실행하려면 다음과 같이하십시오.

*/1 * * * * echo "..." | mail -s "crontest" cron@localhost

http://www.cyberciti.biz/faq/how-do-i-add-jobs-to-cron-under-linux-or-unix-oses/


맞습니다. 구문이 잘못되었습니다. 그러나 테스트를 위해 거기에 넣었습니다. 이제 유효한 구문으로도 작동하지 않습니다.
jgillich

어쩌면 $PATH문제일까요? 전체 경로를 지정 시도 mail하고 echo은 crontab 항목에.
arochette

불행히도, 나는 그 문제를 해결했습니다 (내 답변 참조).
jgillich

1

좋아, /var/log/cron실마리를 주었다.

CROND[7709]: (apache) CMD (echo "..." | mail -s "crontest" cron@localhost)
CROND[7709]: (CRON) ERROR chdir failed (/usr/share/httpd): No such file or directory

문제는 cron이 무언가를 실행하기 전에 사용자의 홈 디렉토리전환 하려고 시도한다는 것입니다. 그러나 아파치를 설치하지 않았으므로 / usr / share / httpd는 존재하지 않았습니다. 그 디렉토리를 만드는 것이 효과가 있다고 생각하지만 sudo를 루트로 사용하는 것이 더 나은 해결책이어야합니다.

* * * * * sudo -u apache env TERM=xterm php -f /var/www/owncloud/cron.php

env TERM=xterm cron의 경고를 피하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.