关闭脚本未在 Google Cloud VM 上执行

Posted

技术标签:

【中文标题】关闭脚本未在 Google Cloud VM 上执行【英文标题】:Shutdown script not executing on Google Cloud VM 【发布时间】:2021-01-16 08:51:03 【问题描述】:

我有以下:

#! /usr/bin/python3.7
f=open("python_out.txt",'w',encoding='utf-8')
f.write("OK1")
import socket
import telegram
f.write("OK2")
BOT_TOKEN = "telegram BOT_TOKEN"
CHAT_ID = "chat_id"

bot = telegram.Bot(token=BOT_TOKEN)
host_name = socket.gethostname()
content = 'Machine name: %s is shutting down!' % host_name
bot.send_message(chat_id=CHAT_ID, text=content)
f.write("OK3")

我已经检查了我的环境,我可以通过python3 script.py使这个脚本在实例中运行,它可以发送通知并输出python_out.txt

我将此脚本设置为shutdown-script

但是当我手动单击“停止”按钮时,它没有按预期工作。 startup-script 也是。

我看过很多帖子:

Shutdown script not executing on a Google Cloud VM Reliably executing shutdown scripts in Google Compute Engine Pro Tip: Use Shutdown Script Detect Preemption on GCP

当然也包括官方文档:

https://cloud.google.com/compute/docs/shutdownscript

我想尝试设置powerbtn.sh,但我在GCP Ubuntu 16.04 LTS 中找不到/etc/acpi/

我找不到更多时间表,有什么想法吗?

【问题讨论】:

您可以尝试将您的文件写入f=open("/tmp/python_out.txt",'w',encoding='utf-8') 吗?并告诉我它是否有效。如果是这样,我会解释你的问题 @guillaumeblaquiere 太棒了!在我修改启动脚本并启动它之后,tmp/python_out.txt 存在,但它只打印到 print(OK1) i.imgur.com/4zoNJg7.png i.imgur.com/48wACEf.png i.imgur.com/WH9X9Fm.png 但我很确定我的环境是正确的。当我在实例连接中输入/usr/bin/python3.7 telegram_notification.py时,它可以通过电报通知我,telegram_notification.py的内容与启动脚本相同 【参考方案1】:

使用启动脚本和关机脚本时,当前执行的用户为root用户,默认目录为/root/。此目录不可写,这就是为什么您的代码没有任何反应。

只需将文件写入可写目录即可。

不要忘记您创建的文件是由root 用户编写的,所有用户都无法读取和/或写入root 编写的文件。使用chmodchown 更改此设置。

【讨论】:

那为什么不能通知呢? 同意,提到startup script,通过推论,我知道关闭也是如此。但是,我同意,这不是克莱德!我打开了一个问题

以上是关于关闭脚本未在 Google Cloud VM 上执行的主要内容,如果未能解决你的问题,请参考以下文章

Google Cloud VM上在线扩硬盘

如何提高 Google Cloud VM 上的网络效率

如何在 Google Cloud VM 上隐藏 PHPMyAdmin

Terraform Google Cloud:使 VM 实例 IP 公开

Google Cloud Run for Anthos(Knative)未在 https 请求上正确设置 X-Forwarded-Proto 标头

Google Cloud 相当于 Azure 的数据科学 VM