我有一个公告机器人,为了一个公告而整天运行它是一种浪费。所以我试图安排服务器的启动,启动我的bot,在启动时通知它需要什么,然后安排5分钟后关机,当它确实完成了。我已经安装了所需的库并将代码复制到VM。如果我试着以正常的方式运行,输入“python3mybot.py”,它就会工作。我也尝试过在tmux中运行它,它在那里也可以工作。问题是我不能用启动脚本启动它。到目前为止,我对bash了解不多,我已经尝试过:
#! /bin/bash
cd home/user
python3 bot.py
#! /bin/bash
cd home/user
chmod +x run.sh
./run.sh
我还尝试创建文件夹,检查它是否执行,我是否在正确的位置,文件夹是否显示在我想要的位置。尽管它似乎试图在根目录下执行代码,尽管在我移动到的位置创建了文件并完成了正确的bash文件。也可能是因为它是一个机器人,所以它是一个连续的代码,不像脚本?我也检查过类似的帖子,但无法完全理解/让它们发挥作用
感谢您的帮助
最新答案
我认为在你的情况下,在GCE上运行它可能比我建议的GAE更好
在这种情况下,您有几种选择,但我的建议是:
创建一个脚本,如
startup.sh
。将文件保存在/etc/init.d/
目录中。更改脚本的权限(使其可执行):chmod +x /etc/init.d/mystartup.sh
。让这个脚本调用你的py文件编辑
/rc.local
脚本。在Ubuntu中,这个文件位于/etc/rc.local
。您需要使用sudo
来编辑这个。将python3 path/to/file/bot.py
放在这个文件的底部,它将在启动时执行。要获得确切的路径,请导航到该路径并键入pwd
。您可能需要再次检查bot.py
是否仍然可以加载正在加载的任何内容如果要关闭
bot.py
末尾的VM,可以在py文件末尾添加以下内容:这将给您60秒的标准时间来停止关机。(它只是执行shell shutdown命令)
如果您没有足够的时间取消关机,自动关机可能会有点麻烦
原始答案
根据你的机器人的实际功能(announcement不是很好的描述),你最好使用免费的应用程序引擎,再加上一个cron job在设定的时间执行你的python
在前面抛出一个简单的flask应用程序来处理传入的cron作业请求
另外,在GAE firewall上阻止除requests from cronjobs之外的所有内容,以确保只有cronjob可以通过。为了绝对确保请求来自您的GAE cronjob,您可以检查是否存在正确的头
main.py
应用程序yaml
cron.yaml
相关问题 更多 >
编程相关推荐