새 웹 서버를 설정 중인데 cron이 예상대로 작동하도록 할 수 없습니다. 저는 크론 작업을 생성한 .tmp/crontab.txt
다음 이를 /var/spool/cron
사용자 "Apache" 아래로 이동하는 스크립트를 사용하고 있습니다 . 내가 아는 한, 이러한 Apache 항목은 실행되지 않습니다.
/var/spool/cron
: 3개의 사용자 파일이 있습니다:
루트 0바이트
Apache 344바이트(양호해 보이지만 성능이 좋지 않음)
JLee 3514바이트(여기서 모든 수동 입력이 이루어집니다.)
예약된 수동 작업이 정상적으로 실행되고 있습니다. 그러나 수동 작업은 Apache의 작업인 "하위 크론"을 생성합니다. 내가 뭘 잘못했나요?
나는 이 서버의 관리자이자 유일한 사용자이므로 모든 cron 작업을 한 명의 사용자로 생성하고 싶습니다.
답변1
새 파일을 복사하기만 하면 cron 데몬이 해당 파일을 읽지 않습니다. 새 crontab 파일을 설치하려면 crontab 명령을 사용해야 합니다. 또한 cron 데몬에게 파일을 읽도록 신호를 보냅니다.
crontab 매뉴얼 페이지에서:
...and though these are files in /var, they are not intended to be
edited directly.
답변2
에서와 같이키스의 대답/var/spool/cron
, 파일이 표시되지 않으므로 파일을 직접 넣어서는 안 됩니다 crond
.
다음 명령을 사용하여 자신의 사용자 crontab
파일 인스턴스와 신호 변경 사항을 유지해야 합니다 .crontab
crond
echo '* * * * * date >>/tmp/output' | crontab
여러 항목을 만들 수 있는 경우 각 항목을 자체 파일에 쓴 다음 cat
결과를 단일 crontab
.
mkdir .crondir
...
echo '* * * * * echo job1 >> /tmp/output.1' > .crondir/job1
echo '* * * * * echo job2 >> /tmp/output.2' > .crondir/job2
echo '* * * * * echo job3 >> /tmp/output.3' > .crondir/job3
cat .crondir/job* | crontab
분명히 명령을 실행하는 사용자는 crontab
해당 명령을 사용할 수 있는 권한이 있어야 합니다. 애플리케이션에 대한 권한 체계를 설정하는 방법에 따라 자체 사용자 계정이 될 수 있습니다. 그렇지 않으면 웹 서버 사용자( apache
) 또는 심지어 이어야 할 수도 있습니다 root
.