不确定我是否理解:我在屏幕会话下在多个 AWS 实例上运行脚本。这些脚本基于 Python,由于 Amazon Arora 和 EC2 实例的网络问题,一段时间后停止工作。我登录机器并通过执行 进入屏幕会话screen -d -r <screen_name>
,暂停脚本并重新运行。
有没有办法可以自动化?也就是说,重新运行脚本?如果其他脚本终止现有屏幕然后重新启动,则不会出现任何问题
答案1
您的主题询问在一定时间后重新启动脚本。如果情况确实如此,则使用cron
调用python
来运行脚本。我的建议是打开 shell,输入man cron
并享受展现在您面前的奇迹。
如果您想跟踪某个进程是否正在运行,如果没有,则重新启动它,您有几个选择,但最有可能希望将其写为服务并使用主机操作系统的 init 系统启动它,然后使用 Monit、upstart 或 systemd 等工具确保它正在运行,如果没有,则重新启动它。
我想说你已经用阅读计划预定了今年剩余的时间。=)
答案2
我建议创建一个适当的初始化脚本,在终端多路复用器下运行您的脚本,如果失败则重新启动脚本。然后,在需要时,您可以附加到正在运行的会话screen
并tmux
监视您的脚本。
就我而言,我有几个 systemd 单元在控制台上运行 golang 程序,tmux
并将这些 golang 程序的生命周期(启动、失败时重新启动、关机时停止等)委托给操作系统的“官方”init 系统。
我使用这个问题中的例子作为起点:https://askubuntu.com/questions/802189/how-to-run-tmux-screen-with-systemd-230