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.log在命令列(而不是 crontab)上嘗試,它就可以工作。

是 crontab 中的錯誤還是錯誤取決於第一條語句?

你能幫助我嗎?

謝謝。

答案1

您使用了sudo crontab -e,它編輯根 crontab。因此,您不需要(也不應該sudocrontab檔案本身內部使用),因為命令已經以 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發送錯誤的本機電子郵件。您可以使用mailormailx命令(作為 root,因為它來自 root crontab),或者欺騙只是less /var/mail/root為了查看原始郵件檔案。

相關內容