我在 Google Cloud Compute 上的 Ubuntu VM 中运行后台任务时遇到了问题。当我启动任务时,它会运行一段时间,但最终总会停止。通常这种情况会在大约 20-30 分钟后发生,但有时会持续一个小时。我尝试过的方法:
- 直接运行任务
- 使用 nohup 在主终端运行任务
- 使用屏幕在新终端中运行任务
- 使用 screen 和 nohup 在新终端中运行任务
- 以上每个命令均使用 sudo
肯定有办法吧?提前谢谢!
答案1
您应该实际地将该脚本/任务/命令作为守护进程运行。
由于您使用的是 Ubuntu,因此我建议您systemd
。有多种方法可以配置服务以满足您的需求,但像这样的方法应该就足够了[文件]。值得注意的是,出于安全原因,您的机器人应该以其自己的用户身份运行,并且仅具有其运行所需的权限。
[Unit]
Description=My Discord Bot
After=network.target
[Service]
Type=simple
User=mybot
WorkingDirectory=/home/mybot
ExecStart=/home/mybot/bin/mybot --option=123
Restart=on-failure
[Install]
WantedBy=multi-user.target
您可以了解有关systemd
使用配置选项的更多信息在线文档。
答案2
这是我的一个根本性误解。我使用 Google Platform Cloud Shell 时以为我连接到的是完整 VM,但事实并非如此。
在 GCP 上,您必须使用单独的客户端(似乎任何 SSH 客户端都可以)进行 SSH。云 shell 似乎非常有用,但不幸的是,它从根本上来说不是 VM。