有人知道是否可以确定无人值守升级的状态吗?是否可以找出正在安装哪些软件包或我们处于安装过程的哪个阶段?
我欣赏无人值守升级的好处,但是当你的系统已经关闭了几个月,而你又想安装一个应用程序,或者当它们占用了本来就没多少资源的机器的 CPU 资源时,它们就会非常烦人。
我并不只是想终止无人值守的升级。我知道如何做到这一点。我希望它们能够运行。我只是想知道如何才能知道实际发生了什么以及它们处于哪个阶段。
答案1
在 16.04 及更新的系统上,无人值守升级每天在随机时间运行。
如何判断今天无人值守升级何时运行:
随机时间由 cron 作业 (/etc/cron.daily/apt.compat) 设置,您可以通过询问 systemd 来读取今天的随机时间:
$ systemctl list-timers apt-daily.timer
NEXT LEFT LAST PASSED UNIT ACTIVATES
Tue 2017-07-11 01:53:29 CDT 13h left Mon 2017-07-10 11:22:40 CDT 1h 9min ago apt-daily.timer apt-daily.service
在这种情况下,你可以看到uu在1小时9分钟前运行。
如何判断无人值守升级是否仍在运行:
一种简单的方法是检查各个 apt 组件的时间戳文件:
$ ls -l /var/lib/apt/periodic/
total 0
-rw-r--r-- 1 root root 0 Jul 10 11:24 unattended-upgrades-stamp
-rw-r--r-- 1 root root 0 Jul 10 11:23 update-stamp
-rw-r--r-- 1 root root 0 Jul 10 11:24 update-success-stamp
-rw-r--r-- 1 root root 0 Jul 10 11:24 upgrade-stamp
您可以在这里看到 uu 只是另一个 apt 组件。无论 apt 是如何启动的,apt 都会将时间戳放在这里。
将数据放在一起,您可以看到计时器在 11:22 启动了 apt (uu)。它运行了更新,于 11:23 完成,然后运行了升级,于 11:24 完成。最后,您可以看到 apt 认为升级成功(没有错误或其他故障)。
显然,如果您看到最近的计时器没有相应的完成时间戳,那么您可能需要检查ps
apt 是否仍在运行。
如何判断 apt 当前正在运行哪一步:
一个简单的方法是检查 uu 日志文件。
$ less /var/log/unattended-upgrades/unattended-upgrades.log
2017-07-10 11:23:00,348 INFO Initial blacklisted packages:
2017-07-10 11:23:00,349 INFO Initial whitelisted packages:
2017-07-10 11:23:00,349 INFO Starting unattended upgrades script
2017-07-10 11:23:00,349 INFO Allowed origins are: ['o=Ubuntu,a=zesty-security', 'o=Ubuntu,a=zesty-updates']
2017-07-10 11:23:10,485 INFO Packages that will be upgraded: apport apport-gtk libpoppler-glib8 libpoppler-qt5-1 libpoppler64 poppler-utils python3-apport python3-problem-report
2017-07-10 11:23:10,485 INFO Writing dpkg log to '/var/log/unattended-upgrades/unattended-upgrades-dpkg.log'
2017-07-10 11:24:20,419 INFO All upgrades installed
在这里您可以看到正常的日常进程,包括“已开始”和“已完成”的行,以及即将升级的软件包列表。
如果软件包列表尚未记录,则可以安全地中断 apt。一旦软件包列表已记录,请勿中断 apt。
由于您的环境资源受限,请注意 apt 可以通过多种方式配置,以不同的运行时间、良好级别、带宽限制和许多其他有用的设置可靠且不引人注目地工作。
答案2
我用它来获取待升级的总数
apt list --upgradeable | wc -l
答案3
要查看升级是否正在进行:
watch 'ps aux | grep unattended | grep -v "grep\|shutdown"'
要查看正在发生什么:
tail -f /var/log/unattended-upgrades/unattended-upgrades.log
要查看正在升级的软件包:
tail -f /var/log/unattended-upgrades/unattended-upgrades-dpkg.log
日志预览:
/var/log/unattended-upgrades/unattended-upgrades.log
- 请注意时间戳和软件包列表准备好之前经过的时间长度,这是我几个月没用过的系统上的情况。
2022-03-24 20:32:54,042 INFO Starting unattended upgrades script
2022-03-24 20:32:54,042 INFO Allowed origins are: o=Ubuntu,a=bionic, o=Ubuntu,a=bionic-security, o=UbuntuESM,a=bionic
2022-03-24 21:11:31,321 INFO Packages that will be upgraded: accountsservice apport apport-gtk apt apt-utils aptdaemon ...
/var/log/unattended-upgrades/unattended-upgrades-dpkg.log
Log started: 2022-03-24 21:17:49
(Reading database ... 151616 files and directories currently installed.)
Preparing to unpack .../libbluetooth3_5.48-0ubuntu3.8_amd64.deb ...
Unpacking libbluetooth3:amd64 (5.48-0ubuntu3.8) over (5.48-0ubuntu3.3) ...
Setting up libbluetooth3:amd64 (5.48-0ubuntu3.8) ...
Processing triggers for libc-bin (2.27-3ubuntu1) ...
Log ended: 2022-03-24 21:17:51
...