我在使用 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
为了查看原始邮件文件。