크론 작업을 어떤 사용자로 생성하고 실행해야 합니까? 아파치? 뿌리? 나?

크론 작업을 어떤 사용자로 생성하고 실행해야 합니까? 아파치? 뿌리? 나?

새 웹 서버를 설정 중인데 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파일 인스턴스와 신호 변경 사항을 유지해야 합니다 .crontabcrond

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.

관련 정보