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.log
crontab이 아닌 명령줄에서 시도 하면 작동합니다.
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
원본 메일 파일을 보려면 .