关闭脚本未在 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
编写的文件。使用chmod
或chown
更改此设置。
【讨论】:
那为什么不能通知呢? 同意,提到startup script,通过推论,我知道关闭也是如此。但是,我同意,这不是克莱德!我打开了一个问题以上是关于关闭脚本未在 Google Cloud VM 上执行的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Google Cloud VM 上隐藏 PHPMyAdmin
Terraform Google Cloud:使 VM 实例 IP 公开
Google Cloud Run for Anthos(Knative)未在 https 请求上正确设置 X-Forwarded-Proto 标头