crontab에서 파일로의 명령 출력이 작동하지 않습니다.

crontab에서 파일로의 명령 출력이 작동하지 않습니다.

Raspbian Buster를 사용하여 cli에 명령 출력을 표시하고 이를 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

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

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원본 메일 파일을 보려면 .

관련 정보