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

相关内容