我有一个AWS EC2实例,我想在它上运行一个无限时间的作业。但是,我不想在我的实例中使用SSH来运行命令。
我基本上需要运行一个python脚本,它可以无限期地执行工作,所以我想从我的EC2实例中运行EC2,这样我就可以远程运行它,只要我的实例正在运行,script.py脚本就在运行。
更清楚的是,如果我运行像sudo service httpd start这样的命令,我就不需要将SSHed保留到实例中,就可以知道通信正在被服务。类似地,我希望运行一个命令,即使我终止到实例的SSH连接,script.py仍然在运行。
我想到的一个解决方案是让本地机器显式地连接到实例,并在一个无限循环中运行命令,但我想避免这种情况。
另一个问题是,是否有一种方法可以扩展到多个执行同一任务的实例。
我也尝试过在etc目录中编辑etc,但我确认该作业没有运行。
发布于 2021-01-09 01:15:01
发布于 2021-01-09 01:18:06
您的问题并不是真正与python或aws相关的问题,而是更多的Linux问题。这么说,要实现你想要的,有很多种选择。
如果您只想在退出系统后继续运行程序,那么您可以使用bg +注销。
例如:
$ python script.py
ctrl-z
$ bg
$ disown -h
$ exit 您可以正常启动命令,按键盘上的ctrl键即可挂起该任务。
接下来,调用bg,它将最后一个挂起的任务切换到后台运行。
在运行disown -h之后,这将从当前shell的控件中移除该进程(一旦退出ssh,它将允许它持久化)。
最后,您可以安全地退出ssh,您的进程将无限期地继续运行。
还有许多其他选项可以使用,但这是最简单的一个。
https://stackoverflow.com/questions/65638187
复制相似问题