Вывод команды в файл в crontab не работает

Вывод команды в файл в crontab не работает

У меня возникла проблема с отображением вывода команды в cli и перенаправлением его также в файл на моем Raspberry Pi 4 с Raspbian Buster.

Я начал 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или mailx(как root, так как она из root crontab), илиизменятьи просто less /var/mail/rootпосмотреть необработанный почтовый файл.

Связанный контент