Вопрос или проблема
Я просто хочу скрипт, который выполняет несколько команд обновления. Я хочу, чтобы они выполнялись каждый день в 3 часа ночи.
Я не могу понять, почему они не работают. Я добавил эту строку в crontab -e
0 3 * * * root /etc/cron.custom/update
Скрипт в файле обновления:
#!/bin/bash
# если не root, запуск от имени root
if (( $EUID != 0 )); then
sudo /home/jb/bash/update.sh
exit
fi
apt-get update
dietpi-update
apt-get -y upgrade
apt-get -y dist-upgrade
apt-get clean
apt-get -y autoremove
reboot
Я не знаю, как создавать скрипты, поэтому я нашел это в интернете. Удивительно сложно найти ответы на любые вопросы, касающиеся редактирования cron.
Автоматические обновления не обновляют всё, поэтому прежде чем кто-либо порекомендует это, я уже пробовал и это постоянно что-то пропускало.
В общем, как мне автоматически обновить и улучшить устройство?
Работаю на Debian (DietPi).
Создайте необходимые папки, затем используйте nano и crontab. Готово.
sudo nano /home/jb/scripts/update
#!/bin/bash
apt-get update ; apt-get -y upgrade ; apt-get -y dist-upgrade ; apt-get clean ; apt-get -y autoremove ; reboot
sudo crontab -e
0 3 * * * sudo bash /home/jb/scripts/update
(Я могу полностью подтвердить ваши обвинения на основе собственного опыта. Совсем недавно я пытался настроить несколько cron-задач на Raspbian, и ни одна из них не сработала в стандартном режиме настройки crontab.)
Теперь вот что вам нужно сделать, просто скопируйте и вставьте большую часть этого:
mkdir /home/jb/scripts
sudo cp /etc/cron.custom/update /home/jb/scripts/
sudo crontab -e
Добавьте следующее в открывшийся crontab:
0 3 * * * sudo bash /home/jb/scripts/update
Выйдите из crontab.
(ДА, sudo нужно добавить, хотя crontab -e уже находится в режиме sudo…)
Также измените файл update на:
#!/bin/bash
apt-get update ; dietpi-update ; apt-get -y upgrade ; apt-get -y dist-upgrade ; apt-get clean ; apt-get -y autoremove ; reboot
Ответ или решение
Чтобы настроить автоматическое обновление системы на вашем устройстве с Debian (DietPi) с использованием cron, выполните следующие шаги.
Шаг 1: Создание сценария обновления
-
Создайте каталог для ваших сценариев, если он еще не существует:
mkdir -p /home/jb/scripts
-
Создайте или откройте файл обновления с помощью редактора:
sudo nano /home/jb/scripts/update
-
Вставьте в файл следующий код:
#!/bin/bash apt-get update apt-get -y upgrade apt-get -y dist-upgrade apt-get clean apt-get -y autoremove reboot
-
Сохраните изменения и закройте редактор (в nano нажмите
CTRL + O
, затемEnter
, послеCTRL + X
). -
Сделайте сценарий исполняемым:
sudo chmod +x /home/jb/scripts/update
Шаг 2: Настройка cron
-
Откройте crontab для редактирования:
sudo crontab -e
-
В конце файла добавьте следующую строку:
0 3 * * * /bin/bash /home/jb/scripts/update
Это запланирует выполнение сценария каждый день в 3:00 ночи.
-
Сохраните и закройте crontab (в nano снова
CTRL + O
, затемEnter
, послеCTRL + X
).
Дополнительные замечания
- Убедитесь, что у вас есть доступ к интернету в 3:00, когда выполнится обновление.
- Обратите внимание, что выполнение команды reboot приведет к отключению и включению устройства после обновлений. Убедитесь, что это приемлемо для вашего сценария использования.
-
Для удобства отслеживания, вы можете перенаправлять вывод вашего сценария в файл журнала:
Вы можете изменить строку в crontab на:
0 3 * * * /bin/bash /home/jb/scripts/update >> /var/log/update.log 2>&1
Это позволит вам видеть, что именно выполнялось, и любую возможную ошибку.
Теперь ваше устройство должно автоматически обновляться каждый день в 3:00. Если у вас возникнут дополнительные вопросы или проблемы, не стесняйтесь обращаться за помощью.