Hallo zusammen!
Bisher prüfe ich per cron alle 30min auf Updates (welche dann auch eingespielt würden, falls vorhanden) und starte meinen Server früh morgens neu (ebenfalls per cron). Letzteres für den Fall, dass es ein Update gab, nach dem neu gestartet werden muss.
Lässt sich das verbessern?
Ich würde gerne nurnoch an Tagen neustarten, an denen es Updates gab, die dies nötig machen.
Auto-Reboot nach Kernel-Update
Re: Auto-Reboot nach Kernel-Update
debian-goodies, 'checkrestart'.
Das Tool, Vorschäge 'service xxxx restart', ist grob brauchbar.
systemd-Prozesse sind problematisch,
auch Dienste/Prozesse in Containern.
Diese sollten identifiziert und gesondert behandelt werden.
ZBsp. benötigt ein systemd-Init ein 'systemctl daemon-reexec' statt eines
'service xxxxxx restart' resp. 'systemctl restart xxxxxx.xervice'.
Dito natürlich kernel-Upgrades, die von dem Tool gar nicht behandelt werden.
Auch zBsp. getty, oder von cron gestartete Prozesse, für die checkrestart immer ein 'service cron restart' ausgibt.
Dein Reboot-Job kann ja nach einem Lockfile sehen,
welches von einem mit obigem Tool arbeitenden Skript gesetzt oder gelöscht wird.
Speziell beim kernel,
ein Skript könnte abgleichen und
und bei Unterschied, also einem inzwischen neu installierten Kernelpaket, einen Neustart auslösen.
Vielleicht auch einen Trigger in /etc/kernel/../ (halte ich für unpraktikabel),
oder ein Test auf neueres Datum der /boot/vmlinuz-..., viele Möglichkeiten.
Mein bisheriger Entwurf für checkrestart-do.sh(Mehrere vsftpd-Instanzen laufen bei mir über jeweils eigene Startskripte,
die aber von checkrestart nicht so erkannt werden)
Das Tool, Vorschäge 'service xxxx restart', ist grob brauchbar.
systemd-Prozesse sind problematisch,
auch Dienste/Prozesse in Containern.
Diese sollten identifiziert und gesondert behandelt werden.
ZBsp. benötigt ein systemd-Init ein 'systemctl daemon-reexec' statt eines
'service xxxxxx restart' resp. 'systemctl restart xxxxxx.xervice'.
Dito natürlich kernel-Upgrades, die von dem Tool gar nicht behandelt werden.
Auch zBsp. getty, oder von cron gestartete Prozesse, für die checkrestart immer ein 'service cron restart' ausgibt.
Dein Reboot-Job kann ja nach einem Lockfile sehen,
welches von einem mit obigem Tool arbeitenden Skript gesetzt oder gelöscht wird.
Speziell beim kernel,
ein Skript könnte abgleichen
Code: Alles auswählen
# cat /proc/version | awk '{print $3,$(NF-1)}'
3.16.0-4-amd64 3.16.7-ckt4-3
Code: Alles auswählen
VER=3.16.0-4-amd64
aptitude search "?installed(linux-image-$VER)" -F"%V"
oder
dpkg -l grep linux-image-$VER
Vielleicht auch einen Trigger in /etc/kernel/../ (halte ich für unpraktikabel),
oder ein Test auf neueres Datum der /boot/vmlinuz-..., viele Möglichkeiten.
Mein bisheriger Entwurf für checkrestart-do.sh
Code: Alles auswählen
#!/bin/sh
TMPf=$(tempfile)
checkrestart | tee $TMPf
#ls -l /sbin/init
ps hp 1 | grep -q systemd && HAS_SYSTEMD=1
cat $TMPf | uniq | awk '$1=="service" && $3=="restart"' | while read prg svc cmd; do
[ "x$HAS_SYSTEMD" = "x1" ] && { prg="systemctl restart"; svc="$svc.service"; cmd=; }
case "$svc" in
vsftpd)
$prg $svc $cmd
/usr/local/sbin/dpkg-invoke--vsftpd
;;
smbd|nmbd|samba-ad-dc)
;;
samba)
$prg $svc $cmd
;;
udev-finish)
# wird normalerweise durch 'udev' erledigt.
;;
*systemd*|*login*|*journal*)
[ "x$HAS_SYSTEMD" = "x1" ] && echo="echo SYSTEMD"
$echo $prg $svc $cmd
;;
*)
$prg $svc $cmd
;;
esac
done
rm $TMPf
die aber von checkrestart nicht so erkannt werden)
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
Re: Auto-Reboot nach Kernel-Update
Ah sehr gut!
Ich sehe schon, du hast dir da Mühe gemacht.
Bei mir ist es halt so, dass es um nen Backoffice-Server geht.
Ich kann also garantieren, dass den früh morgens noch niemand benutzt.
Insofern frag ich mich jetzt, ob sich der Aufwand lohnt, das zu implementieren.
Denn letztlich entsteht ja keine Leistungseinbuße oder vorzeitige Alterung, wenn der Rechner täglich, statt z.B. monatlich rebooted wird?
Ich sehe schon, du hast dir da Mühe gemacht.
Bei mir ist es halt so, dass es um nen Backoffice-Server geht.
Ich kann also garantieren, dass den früh morgens noch niemand benutzt.
Insofern frag ich mich jetzt, ob sich der Aufwand lohnt, das zu implementieren.
Denn letztlich entsteht ja keine Leistungseinbuße oder vorzeitige Alterung, wenn der Rechner täglich, statt z.B. monatlich rebooted wird?