Я запускаю этот простой скрипт на моем Raspberry Pi для автоматического обновления, поэтому я могу забыть об этом. Он также ведет журнал, в котором говорится, было ли обновление успешным. Сценарий update.sh:
#!/bin/bash
echo "Update starts on: $(date)" >> /home/pi/update.log
if apt-get update && apt-get upgrade -y; then
echo "update successful $(date)" >> /home/pi/update.log
else
echo "Couldn't update $(date)" >> /home/pi/update.log
fi
Я добавил этот скрипт в корневой crontab, используя sudo crontab -e
и cronjob настроен на ежедневный запуск в 6 утра.
0 6 * * * /home/pi/update.sh
Я знаю, что это работает в некоторой степени, потому что запуск sudo ./update.sh
в оболочке вручную запускает команды и оставляет "успешную" запись в журнале. С другой стороны, при запуске из crontab я всегда получаю запись "не могу обновить". В случае, если это имеет значение, сценарий «update.sh» был создан пользователем "pi", и я никогда не менял разрешения, кроме как предоставляя ему разрешения на выполнение.
Я прочитал еще один вопрос об этой же проблеме, и парень решил ее, поставив sudo
перед командой. Он признает, что это странно, потому что он уже выполняется root, но говорит, что это работает. Я попытался добавить sudo
и убедился, что он действительно работает сейчас.
кто-нибудь знает, почему это произошло? Зачем нужен sudo
если он уже root?