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