매일 스크립트를 실행해야합니다. 스크립트는 루트가 아닌 특정 사용자 (예 : 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 항목을 설정 하는 데 가장 잘 처리됩니다 .