>  기사  >  백엔드 개발  >  ubuntu - Linux에서 예약된 작업 crontab의 php 작업을 실행할 수 없습니다. 가능한 이유를 문의하세요.

ubuntu - Linux에서 예약된 작업 crontab의 php 작업을 실행할 수 없습니다. 가능한 이유를 문의하세요.

WBOY
WBOY원래의
2016-12-01 01:28:011323검색

실행 대기 중인 test.php 스크립트는 로컬 환경에서 실행 가능하며, Linux에서는 php test.php를 수동으로 실행하여 실행할 수도 있습니다.

<code>$name='./log/20161025.txt';
if(file_exists($name))
{
    file_put_contents($name, '定时任务开始了');
}</code>

crontab -e를 실행하여 예약된 작업 편집

<code>* * * * * /usr/bin/php /home/wwwroot/demo/test.php > /var/log/cron.log </code>

내 시도:

  • ps -ef | grep cron을 실행하면 예약된 작업 프로세스를 확인할 수 있는데, 이는 예약된 작업이 실행 중임을 의미하므로 예약된 작업이 시작되지 않는 문제는 없습니다

  • /usr/sbin/service cron restart를 실행하여 예약된 작업을 다시 시작하세요. cron.log에는 기록이 없고 20161025.txt에는 내용이 없습니다

  • chomd +x test.php를 실행하여 권한을 높였지만 효과가 없습니다

  • which php를 실행하고 /usr/bin/php를 반환합니다. php 경로가 정확합니다

아직 가능한 이유를 찾을 수 없습니다. 아이디어를 주세요

보충:
최종 테스트 예약 작업을 실행할 수 있습니다

<code>$name=__DIR__.'/log/20161025.txt';

if(file_exists($name))
{
    file_put_contents($name,date('Y-m-d H:i:s',time())."\r\n",FILE_APPEND);
}</code>

스크립트를 사용하여 1분마다 실행되는 현재 시간을 인쇄하세요

답글 내용:

실행 대기 중인 test.php 스크립트는 로컬 환경에서 실행 가능하며, Linux에서는 php test.php를 수동으로 실행하여 실행할 수도 있습니다.

<code>$name='./log/20161025.txt';
if(file_exists($name))
{
    file_put_contents($name, '定时任务开始了');
}</code>

예약된 작업을 편집하려면 crontab -e를 실행하세요

<code>* * * * * /usr/bin/php /home/wwwroot/demo/test.php > /var/log/cron.log </code>

내 시도:

  • ps -ef | grep cron을 실행하면 예약된 작업 프로세스를 확인할 수 있는데, 이는 예약된 작업이 실행 중임을 의미하므로 예약된 작업이 시작되지 않는 문제는 없습니다

  • /usr/sbin/service cron restart를 실행하여 예약된 작업을 다시 시작하세요. cron.log에는 기록이 없고 20161025.txt에는 내용이 없습니다

  • chomd +x test.php를 실행하여 권한을 늘려도 효과가 없습니다

  • which php를 실행하고 /usr/bin/php를 반환합니다. php 경로가 정확합니다

아직 가능한 이유를 찾을 수 없습니다. 아이디어를 주세요

보충:
최종 테스트 예약 작업을 실행할 수 있습니다

<code>$name=__DIR__.'/log/20161025.txt';

if(file_exists($name))
{
    file_put_contents($name,date('Y-m-d H:i:s',time())."\r\n",FILE_APPEND);
}</code>

스크립트를 사용하여 1분마다 실행되는 현재 시간을 인쇄하세요

php 경로는 맞는데 예약된 작업을 시작할 때 작업 디렉터리가 php 파일이 있는 디렉터리가 아니어서 코드를 변경해야 합니다

<code>$name=__DIR__.'/log/20161025.txt';
if(file_exists($name))
{
    file_put_contents($name, '定时任务开始了');
}</code>

경로가 잘못된 것 같습니다. php 스크립트에서 상대주소를 절대경로로 바꿔보세요

PHP 경로는 정확합니다. PHP 코드의 일부 경로에 오류가 있습니다. 명령줄 프로그램을 작성할 때 상대 디렉터리와 같은 종속성을 사용하지 마세요.
실수는 상대 디렉터리에 있습니다. crontab을 시작하여 PHP 스크립트를 실행하고 수동으로 한 번 실행하면 오류가 어디에 있는지 알 수 있습니다.
상대 경로를 인쇄하세요. 상상했던 길이 아니어야 합니다.

locate 20161025.txt파일이 생성되었는지 확인할 수 있습니다. locate updatedb 전.

권한 문제를 확인하려면 다음 crontab -l을 실행하여 예약된 작업을 성공적으로 추가했는지 확인하세요

<code>[DongYao$ 19:28]➞ $crontab -l
* * * * * /bin/echo `date` >> /var/log/test.log
You have mail in /var/mail/DongYao
[DongYao$ 19:39]➞ $

[root$ 19:37]➞ $tail -f /var/log/test.log 
Mon Oct 24 19:38:00 CST 2016
Mon Oct 24 19:39:00 CST 2016
</code>
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.