특정 사용자로 실행중인 crontab 사용자 (예 : user1)로 실행해야합니다. 그래서 cron

매일 스크립트를 실행해야합니다. 스크립트는 루트가 아닌 특정 사용자 (예 : user1)로 실행해야합니다. 그래서 cron 파일을 /etc/cron.d에 넣고 사용자 이름을 줄 (2 번째 열)에 넣습니다. 그러나 명령을 찾을 수 없다는 오류가 발생합니다. 스크립트가 user1의 환경으로 실행되지 않은 것 같습니다. 내가 뭐 놓친 거 없니?



답변

/etc/crontab파일 에만 /etc/cron.d/사용자 이름 필드가 있습니다. 해당 파일에서 다음을 수행 할 수 있습니다.

1 1 * * * username /path/to/your/script.sh

루트의 crontab에서 sudo crontab -e다음을 사용할 수 있습니다.

1 1 * * * su username -c "/path/to/your/script.sh"

또는 다음과 같이 사용자의 실제 crontab을 사용할 수 있습니다.

sudo crontab -u username -e

crontab 파일 의 두 번째 열 은 작업을 실행할 시간입니다. 여섯 번째 필드를 의미 했습니까?


답변

사용중인 실행 파일이 / usr / local / bin에있는 경우 해당 사용자의 PATH를 설정해야 할 수도 있습니다. PATH를 설정하려면 cronjobs에 다음과 같이 입력하십시오.

PATH=/bin:/usr/bin:/usr/local/bin

*/5 * * * * user1 sample_executable

다른 방법은 cronjob에서 sample_ executable의 경로를 완전히 지정하는 것입니다.

*/5 * * * * user1 /path/to/sample_executable

sample_ executable이 표준 PATH에없는 실행 파일을 참조하는 경우 첫 번째 옵션을 사용해야합니다.


답변

사용자 crontab의 일반적인 디렉토리는 / var / spool / cron / crontabs에 있습니다. 파일 형식은 사용자 이름이 포함되지 않은 형식입니다. 사용자 crontab은 사용자가 소유하고 모드 0600을 가진 사용자의 이름을 따서 명명됩니다. 이것은 탭 파일을 작성 crontab -u username filename하고 해당 사용자에 대해 원하는 cron 항목을 설정 하는 데 가장 잘 처리됩니다 .