无人值守升级状态?

无人值守升级状态?

有人知道是否可以确定无人值守升级的状态吗?是否可以找出正在安装哪些软件包或我们处于安装过程的哪个阶段?

我欣赏无人值守升级的好处,但是当你的系统已经关闭了几个月,而你又想安装一个应用程序,或者当它们占用了本来就没多少资源的机器的 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 认为升级成功(没有错误或其他故障)。

显然,如果您看到最近的计时器没有相应的完成时间戳,那么您可能需要检查psapt 是否仍在运行。

如何判断 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
...

相关内容