Aktionen

Ubuntu automatischen Neustart von Diensten nach Upgrade deaktivieren

Aus znilwiki

Changelog:

  • 25.08.2024 erste Version

Vorwort

Ich betreibe diverse Ubuntu-Server, dank Virtualisierung für jedes Thema (Seafile, Nextcloud, Zabbix, Homepage usw.) einen eigenen.
Updates spiele ich in der Regel mit dem folgenden Einzeiler ein (je nach Benutzer mit sudo davor):

apt update && apt upgrade -y && apt autoremove -y

Das Problem ist bei manchen meiner Server das Ubuntu neuerdings (so ab 22.04) dann auch ggf. entsprechende Dienste neu startet:

Dienste werden neu gestartet...
 systemctl restart apache2.service cron.service fwupd.service mariadb.service open-vm-tools.service packagekit.service polkit.service rsyslog.service snmptrapd.service snmptt.service 
udisks2.service upower.service vgauth.service zabbix-agent2.service zabbix-web-service.service
 
Dienste deren Neustart verschoben wurde:
 systemctl restart ModemManager.service
 /etc/needrestart/restart.d/dbus.service
 systemctl restart getty@tty1.service
 systemctl restart systemd-logind.service

An sich kein Problem - aber dann doch weil hierbei die Reihenfolge gerne Suboptimal ist. Beispielsweise auf meinem Zabbix Server startet der gerne MariaDB durch obwohl der Zabbix-Server noch läuft. Wenn ich dran denke beende ich den Server vorher, wenn ich es vergesse hängt er gerne beim Neustarten.


Automatischen Neustart verhindern

Wir bearbeiten folgende Datei:

nano /etc/needrestart/needrestart.conf

und suchen nach folgenden Zeilen

# Restart mode: (l)ist only, (i)nteractive or (a)utomatically.
#
# ATTENTION: If needrestart is configured to run in interactive mode but is run
# non-interactive (i.e. unattended-upgrades) it will fallback to list only mode.
#
# UBUNTU: the default restart mode when running as part of the APT hook is 'a',
# unless a specific UI is configured (see below).
#$nrconf{restart} = 'i';

Bei der letzten Zeile entfernen wir das Kommentarzeichen davor und machen aus dem i ein l, wie es auch in der Obersten Zeile beschrieben wird:

$nrconf{restart} = 'l';

So werden notwendige Neustarts nur aufgelistet.


Ergebnis

Nun werden bei einem Update nur die Dienste aufgeführt die einen Neustart bräuchten:

Dienste, die neu gestartet werden müssen:
 systemctl restart apache2.service
 systemctl restart fail2ban.service
 systemctl restart fwupd.service
 systemctl restart mariadb.service
 systemctl restart packagekit.service
 systemctl restart php5.6-fpm.service
 systemctl restart php7.0-fpm.service
 systemctl restart php7.1-fpm.service
 systemctl restart php7.2-fpm.service
 systemctl restart php7.3-fpm.service
 systemctl restart php7.4-fpm.service
 systemctl restart php8.0-fpm.service
 systemctl restart php8.1-fpm.service
 systemctl restart php8.2-fpm.service
 systemctl restart php8.3-fpm.service
 systemctl restart polkit.service
 systemctl restart postfix@-.service
 systemctl restart rpcbind.service
 systemctl restart rsyslog.service
 systemctl restart systemd-journald.service
 /etc/needrestart/restart.d/systemd-manager
 systemctl restart systemd-networkd.service
 systemctl restart systemd-resolved.service
 systemctl restart systemd-timesyncd.service
 systemctl restart systemd-udevd.service
 systemctl restart udisks2.service
 systemctl restart veeamservice.service
 systemctl restart zabbix-agent2.service

Dienste deren Neustart verschoben wurde:
 systemctl restart ModemManager.service
 systemctl restart NetworkManager.service
 /etc/needrestart/restart.d/dbus.service
 systemctl restart networkd-dispatcher.service
 systemctl restart systemd-logind.service
 systemctl restart unattended-upgrades.service
 systemctl restart wpa_supplicant.service

Es müssen keine Container neu gestartet werden.

Alternative

Alternativ könnte man needrestart auch einfach deinstallieren, dann gibt es aber auch keine Meldungen mehr. So war es "früher", so bis Ubuntu 20.04:

sudo apt remove needrestart
sudo apt purge needrestart

Quellen


Kommentare

Loading comments...