Package: unattended-upgrades
Version: 1.11.2
I recently started using unattended-upgrades to keep a machine up to date.
After installing, I've had a few instances where the machine restarted on
its own. I believe that unattended-upgrades rebooted my machine even
though Automatic-Reboot is set to False.
Logged from syslog:
Oct 20 12:15:43 potato systemd[1]: Started Unattended Upgrades Shutdown.
From /etc/apt/apt.conf.d/50unattended-upgrades:
Unattended-Upgrade::Automatic-Reboot "false";
Looking at the source for /usr/bin/unattended-upgrade, reboots are handled
by reboot_if_requested_and_needed(). The check for Automatic-Reboot is on
lines 1336 and 1337. I believe the check is wrong.
The test for False on line 1337 should be True, to indicate that if
Automatic-Reboot is not set to True in the configuration file, the
function should return without proceeding.
1331 def reboot_if_requested_and_needed():
1332 # type: () -> None
1333 """auto-reboot (if required and the config for this is set)"""
1334 if not os.path.exists(REBOOT_REQUIRED_FILE):
1335 return
1336 if not apt_pkg.config.find_b(
1337 "Unattended-Upgrade::Automatic-Reboot", False):
1338 return
1339 # see if we need to check for logged in users
1340 if not apt_pkg.config.find_b(
1341 "Unattended-Upgrade::Automatic-Reboot-WithUsers", True):
1342 users = logged_in_users()
1343 if users:
1344 msg = gettext.ngettext(
1345 "Found %s, but not rebooting because %s is logged in." % (
1346 REBOOT_REQUIRED_FILE, users),
1347 "Found %s, but not rebooting because %s are logged in." % (
1348 REBOOT_REQUIRED_FILE, users),
1349 len(users))
1350 logging.warning(msg)
1351 return
1352 # reboot at the specified time
1353 when = apt_pkg.config.find(
1354 "Unattended-Upgrade::Automatic-Reboot-Time", "now")
1355 logging.warning("Found %s, rebooting" % REBOOT_REQUIRED_FILE)
1356 cmd = ["/sbin/shutdown", "-r", when]
1357 try:
1358 shutdown_msg = subprocess.check_output(cmd,
stderr=subprocess.STDOUT)
1359 if shutdown_msg.strip():
1360 logging.warning("Shutdown msg: %s", shutdown_msg.strip())
1361 except Exception as e:
1362 logging.error("Failed to issue shutdown: %s", e)
1363