Автоматическое обновление Ubuntu

UPD: приведенный ниже скрипт превратился в целую систему автообновлений с блокировкой выключения во время обновления: system-autoupdate


Замучился постоянно устанавливать обновления на сервер с Ubuntu, unnatended-upgrades не хочу конфигурировать, да и делает он не совсем то, что нужно, поэтому сделал автообновление системы скриптом. Его код ниже. Что делает скрипт, прописано в коде комментариями.

sudo nano /usr/local/bin/system-update
Вставляем код скрипта (можно вместе с комментариями просто скопировать):

#!/bin/bash
# источник скрипта: https://nixtux.ru/520
# в случае, если придыдущая операция с пакетами не была доделана, доделаем ее, иначе эта команда просто ничего не сделает4 при недоделанных операциях с пакетами другие команды откажутся работать и будут предлагать запустить эту (например, сервер перезагрузился во время установки пакетов)
dpkg --configure -a
# обновляем кеш репозиториев
apt update
# на всякий случай принудительно завершаем все операции записи на диск, то есть записываем те данные, которые пока еще находятся в оперативной памяти
sync
# устанавливаем все обновления
apt dist-upgrade -y
sync
# перезапустим основные сервисы, работающие на сервере
# если что-то из них обновляется, то оно и так должно перезапускаться, но мне простой веб-сервера в пару секунд на перезапуск не страшен, а вот оперативная память не плохо так очищается, если ее кто-то скушал
systemctl restart apache2 mysql nginx exim4 dovecot fail2ban
sync
# удаляем пакеты-сироты
apt autoremove -y
sync
# Рассвопливаем систему:
# выключаем своп, тем самым принудительно переносим в оперативную память из свопа все, что в нем находилось (а память мы уже расчистили перезапуком ее основных потребителей)
swapoff -a
# включаем своп заново
swapon -a
# у меня на сервере используется zram, swapoff -a его тоже включил, а swapon -a не включил, поэтому включим его заново
systemctl restart zram-config

Делаем скрипт исполняемым:
sudo chmod +x /usr/local/bin/system-update

В крон (sudo crontab -e) пишем:

30 6 * * * /usr/local/bin/system-update

Тогда скрипт автообновления системы будет запускаться каждый день в 6 часов 30 минут.

P.S. Про zram читайте в моей статье на Хабре «Нехватка оперативной памяти в Linux на рабочем ПК: оптимизация и действия при зависании»

2
Отправить ответ

avatar
1 Comment threads
1 Thread replies
1 Followers
 
Most reacted comment
Hottest comment thread
2 Comment authors
Михаил Новоселовd12 Recent comment authors
  Subscribe  
самые новые самые старые рейтинг
Сообщать по почте
d12
Гость
d12

Будет ли работать на Ubuntu 20.04 d в таком виде?
#!/bin/bash
# источник скрипта: https://nixtux.ru/520
# обновляем кеш репозиториев
apt update
# на всякий случай принудительно завершаем все операции записи на диск, то есть записываем те данные, которые пока еще находятся в оперативной памяти
sync
# устанавливаем все обновления
apt dist-upgrade -y
sync
# удаляем пакеты-сироты
apt autoremove -y
sync
reboot