Onion Information
Automatically rebooting for kernel updates
I use reboot-notifier on most of my servers to let me know when I need to reboot them for kernel updates since I want to decide exactly when those machines go down. On the other hand, my home backup server has very predictable usage pattern...
Onion Details
Page Clicks: 0
First Seen: 03/11/2024
Last Indexed: 10/21/2024
Onion Content
I use reboot-notifier on most of my servers to let me know when I need to reboot them for kernel updates since I want to decide exactly when those machines go down. On the other hand, my home backup server has very predictable usage patterns and so I decided to go one step further there and automate these necessary reboots. To do that, I first installed reboot-notifier which puts the following script in /etc/kernel/postinst.d/reboot-notifier to detect when a new kernel was installed: #!/bin/sh if [ "$0" = "/etc/kernel/postinst.d/reboot-notifier" ]; then DPKG_MAINTSCRIPT_PACKAGE=linux-base fi echo "*** System restart required ***" > /var/run/reboot-required echo "$DPKG_MAINTSCRIPT_PACKAGE" >> /var/run/reboot-required.pkgs Note that unattended-upgrades puts a similar script in /etc/kernel/postinst.d/unattended-upgrades : #!/bin/sh case "$DPKG_MAINTSCRIPT_PACKAGE::$DPKG_MAINTSCRIPT_NAME" in linux-image-extra*::postrm) exit 0;; esac if [ -d /var/run ]; then touch /var/run/reboot-required if ! grep -q "^$DPKG_MAINTSCRIPT_PACKAGE$" /var/run/reboot-required.pkgs 2> /dev/null ; then echo "$DPKG_MAINTSCRIPT_PACKAGE" >> /var/run/reboot-required.pkgs fi and so you only need one of them to be installed since they both write to /var/run/reboot-required . It doesn't hurt to have both of them though. Then I created the following cron job ( /etc/cron.daily/reboot-local ) to actually reboot the server: #!/bin/bash REBOOT_REQUIRED=/var/run/reboot-required if [ -s $REBOOT_REQUIRED ] ; then cat "$REBOOT_REQUIRED" | /usr/bin/mail -s "Rebooting $HOSTNAME" root /bin/systemctl reboot fi With that in place, my server will send me an email and then automatically reboot itself. This is a work in progress because I'd like to add some checks later on to make sure that no backup is in progress during that time (maybe by looking for active ssh connections?), but it works well enough for now. Feel free to leave a comment if you've got a smarter script you'd like to share. RSS Atom Do you use special filename prefixes to ensure that this script is the last daily cron script to run? Because I'm not sure I'd trust cron to resume running the rest of the scripts automatically after the reboot. I tend to enable automatic reboots in unattended-upgrades at a fixed hour when I know no cron scripts are supposed to be running ( Unattended-Upgrade::Automatic-Reboot "true"; Unattended-Upgrade::Automatic-Reboot-Time "04:30"; in /etc/apt/apt.conf.d/50unattended-upgrades-local ). So far it has worked out well. Add a comment