0

我在 Google Cloud 上使用 Container Optimized OS 并发现“自动更新”功能在系统重新启动之前不会应用更新,并且不提供任何在应用更新后安排重新启动的功能。

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

#!/usr/bin/env sh

update_engine_client --block_until_reboot_is_needed
shutdown -r 02:00

我的问题是:如何确定是否已安排关机?到目前为止,我已经尝试了三种在此操作系统中不起作用的方法:

  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- 没有找到文件

该操作系统及其所基于的文档很少。什么决定了如何安排关机,COS 如何处理它?

4

2 回答 2

1

关于您的问题:我如何确定是否已安排关机?

默认情况下没有配置关闭任务,您必须配置它(每天、每周、每月等),更简单的方法是使用“crond”(OS Linux 任务调度程序)请按照本指南了解如何在 cron 中配置作业(COS 通常使用 Ubuntu 操作系统)。

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

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

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

于 2020-07-16T23:27:30.600 回答
0

在 Container-Optimized OS 中,以下命令将在 epoch time 中显示挂起的关闭信息

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

我很好奇为什么 Google 选择使用busctl而不是systemd- 我不熟悉busctl并且不得不对其进行一些阅读以了解该命令在做什么 -busctl手册页

例子:

$ 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
于 2020-07-16T18:36:09.470 回答