【问题标题】:Shutdown script not executing on Google Cloud VM关闭脚本未在 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 也是。

我看过很多帖子:

当然也包括官方文档:

我想尝试设置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的内容与启动脚本相同

标签: python google-cloud-platform virtual-machine google-compute-engine shutdown-script


【解决方案1】:

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

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

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

【讨论】:

  • 那为什么不能通知呢?
  • 同意,提到startup script,通过推论,我知道关闭也是如此。但是,我同意,这不是克莱德!我打开了一个问题
猜你喜欢
  • 2020-06-12
  • 1970-01-01
  • 1970-01-01
  • 2020-07-06
  • 2021-06-14
  • 1970-01-01
  • 2020-08-03
  • 2013-07-21
相关资源
最近更新 更多