如何让进程在关闭本地机器后仍运行在AWS EC2上?

问题描述 投票:0回答:2

我有一个脚本,大约需要 10-15 小时才能完成。我想在 EC2 实例上运行它,并在 10 小时后永远停止该过程。

方法--

CRONTAB
- 如果我为该过程创建一个 cronjob 。如何确保它一生只运行一次并在10小时后删除?

python amazon-web-services amazon-ec2 cron
2个回答
37
投票

您需要打开一个screen会话。您可以通过在 bash 提示符中输入

screen
来完成此操作。输入命令后,输入 CTRL+A,然后输入 d。这将分离您的屏幕会话。但是,您运行的脚本将继续运行。

现在,您可以断开与 SSH 会话的连接。重新登录后,您可以通过输入

resume
screen -r
您的会话。这是假设您只有一次
detached
会话。如果您有多个会话,则必须输入要附加回的会话的 pid。

要检查会话的

pid
,您可以执行以下操作:

ps aux | grep screen

这将列出当前正在运行的屏幕进程。示例输出为:

dhanush          1327   0.0  0.0  2443312     56 s000  S+    3Sep15   0:00.99 screen -r server -p server
dhanush         79037   0.0  0.0  2432784    600 s008  S+    5:03PM   0:00.00 grep screen

这里相关筛选过程的

pid
1327
。 第二行属于搜索关键字
grep
本身的
screen
命令。

tmux 是另一种替代方案。


0
投票

如果你们中有人想要替代解决方案。您可以在后台运行该进程并将该进程与终端分离。

#运行你的脚本 按 (ctrl + z)

按(ctrl + z)停止它

然后执行以下操作

$ bg

$ detach -h

$ exit 

bg 将在后台重新启动您的进程。分离将断开进程与打开终端的连接。您甚至可以使用 jobs 命令检查正在运行的作业。我用它在后台运行一个无限的 python 脚本。

© www.soinside.com 2019 - 2024. All rights reserved.