我有一个脚本,大约需要 10-15 小时才能完成。我想在 EC2 实例上运行它,并在 10 小时后永远停止该过程。
方法--
CRONTAB
- 如果我为该过程创建一个 cronjob 。如何确保它一生只运行一次并在10小时后删除?
您需要打开一个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 是另一种替代方案。
如果你们中有人想要替代解决方案。您可以在后台运行该进程并将该进程与终端分离。
#运行你的脚本 按 (ctrl + z)
按(ctrl + z)停止它
然后执行以下操作
$ bg
$ detach -h
$ exit
bg 将在后台重新启动您的进程。分离将断开进程与打开终端的连接。您甚至可以使用 jobs 命令检查正在运行的作业。我用它在后台运行一个无限的 python 脚本。