我在使用 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
檔案本身內部使用),因為命令已經以 root 身分執行。
因此,您的 crontab 命令可以簡化為這樣
0 */5 * * * /home/pi/linux_scripts/block/blockips.sh > /var/log/blockips.log 2>&1 && ufw status verbose > /var/log/ufw-status.log
以 root 身分執行使用者腳本(即用戶主目錄中的腳本)並不是一個好習慣,但如果您是電腦上的唯一用戶,則這是可以接受的。 (原因是您的普通用戶可以更改腳本以執行任何操作,然後 root 將樂意為他們運行它。)
如果您遇到錯誤,首先要查看的地方是cron
發送錯誤的本機電子郵件。您可以使用mail
ormailx
命令(作為 root,因為它來自 root crontab),或者欺騙只是less /var/mail/root
為了查看原始郵件檔案。