Google Container Optimized OS 如何处理计划关闭?

How does Google Container Optimized OS handle a scheduled shutdown?

我正在 Google Cloud 上使用 Container Optimized OS,发现 'Auto Update' 功能没有 apply the updates until the system is restarted,并且不提供任何应用更新后安排重新启动的功能。

我正在编写一个简单的启动脚本,在需要重新启动时安排关机,本质上:

#!/usr/bin/env sh

update_engine_client --block_until_reboot_is_needed
shutdown -r 02:00

我的问题是:如何确定是否已安排关机?到目前为止,我已经尝试了三种方法,但在 OS:

中不起作用
  1. $ ps -ef | grep shutdown - 没有关机过程
  2. $ systemctl status systemd-shutdownd.service - Unit systemd-shutdownd.service could not be found.
  3. cat /run/systemd/shutdown/scheduled - 未找到文件

关于此 OS 的文档及其所依据的内容很少。什么决定了如何安排关机,以及 COS 如何处理它?

在 Container-Optimized OS 中,following command will display pending shutdown information in epoch time:

$ busctl get-property org.freedesktop.login1 /org/freedesktop/login1 org.freedesktop.login1.Manager ScheduledShutdown

我很好奇为什么 Google 选择使用 busctl 而不是 systemd - 我不熟悉 busctl 并且不得不阅读它以了解什么命令正在执行 - busctl man page

示例:

$ sudo shutdown -r 02:00
Shutdown scheduled for Fri 2020-07-17 02:00:00 UTC, use 'shutdown -c' to cancel.
$ busctl get-property org.freedesktop.login1 /org/freedesktop/login1 org.freedesktop.login1.Manager ScheduledShutdown
(st) "reboot" 1594951200000000
$ sudo shutdown -c
busctl get-property org.freedesktop.login1 /org/freedesktop/login1 org.freedesktop.login1.Manager ScheduledShutdown
(st) "" 0

关于您的问题:如何判断是否已安排关机?

没有默认配置的关机任务,你必须配置它(每天,每周,每月等),更简单的方法是使用“crond”(OS Linux task scheduler) 请按照此 guide 了解如何在 cron 中配置作业(COS 通常使用 Ubuntu OS)。

根据此 GCP guide:“Container-Optimized OS 实例配置为在后台自动下载每周更新;只需重新启动即可使用最新更新。”

因此,我建议您每周在非高峰生产日(周六或周日)配置您的 cron 作业。

如果您还有其他问题,请告诉我。