crontab의 파일에 대한 명령 출력이 작동하지 않습니다

crontab의 파일에 대한 명령 출력이 작동하지 않습니다

cli에서 명령 출력을 표시하고 Raspbian Buster를 사용하여 Raspberry Pi 4의 파일로 리디렉션하는 데 문제가 있습니다.

나는 시작한다 sudo crontab -e.

다음은 내 기본 진술입니다.

0 */5 * * * sudo /home/pi/linux_scripts/block/blockips.sh > /var/log/blockips.log 2>&1 && sudo ufw status verbose > /var/log/ufw-status.log

첫 번째 부분은 작동하지만 두 번째 부분은 쓰기 권한 오류로 인해 작동하지 않습니다 ufw-status.log. 에러 메시지:-bash: /var/log/blockips.log: Keine Berechtigung

그래서 여러 스레드를 읽고 이것을 시도했습니다.

0 */5 * * * sudo /home/pi/linux_scripts/block/blockips.sh > /var/log/blockips.log 2>&1 && sudo ufw status verbose | sudo tee /var/log/ufw-status.log

작동하지 않습니다. 며칠이 지나도 파일은 여전히 ​​변경되지 않습니다. 그러나 crontab이 아닌 명령줄에서만 시도하면 sudo ufw status verbose | sudo tee /var/log/ufw-status.log작동합니다.

crontab에 오류가 있습니까? 아니면 첫 번째 명령문에 따라 오류가 발생합니까?

도와주세요?

감사해요.

답변1

sudo crontab -e루트 crontab을 편집하는 를 사용했습니다 . 결과적으로 명령이 이미 루트로 실행되고 있기 때문에 파일 자체 sudo내에서 필요하지 않으며 사용해서는 안 됩니다.crontab

따라서 crontab 명령을 다음과 같이 단순화할 수 있습니다.

0 */5 * * * /home/pi/linux_scripts/block/blockips.sh > /var/log/blockips.log 2>&1 && ufw status verbose > /var/log/ufw-status.log

사용자 스크립트(즉, 사용자의 홈 디렉토리에 있는 스크립트)를 루트로 실행하는 것은 좋은 습관이 아니지만, 시스템의 유일한 사용자라면 허용됩니다. (그 이유는 일반 사용자가 스크립트를 변경하여 무엇이든 할 수 있고 루트가 이를 의무적으로 실행하기 때문입니다.)

오류가 발생하는 경우 먼저 cron오류를 보내는 로컬 이메일을 살펴보세요. mail또는 명령 을 사용할 수 있습니다 mailx(루트 crontab에서 왔으므로 루트로). 또는속이다less /var/mail/root원시 메일 파일을 보려면 .

관련 정보