不确定我是否有意义:我在屏幕会话下对多个AWS实例运行一个脚本。这些脚本基于Python,由于Amazon和EC2实例的网络问题,在一段时间后停止工作。我通过执行screen -d -r <screen_name>访问机器并进入屏幕会话,停止脚本并重新运行。
有什么办法可以让它自动化吗?那就是,重新运行脚本?如果另一个脚本关闭了现有屏幕,然后重新启动,我就没有问题了。
发布于 2018-08-15 16:08:56
您的主题询问在一定时间之后重新启动脚本。如果这是确切的场景,那么使用cron调用python来运行脚本。我的建议是打开一个外壳,输入man cron,享受眼前展现的奇迹。
如果您想跟踪某个进程是否正在运行,如果没有,请再次启动它,您有几个选项,但是您很可能希望将它写成一个服务,并使用主机操作系统init系统启动它,然后使用Monit、upstart或systemd这样的工具来确保它正在运行并重新启动它。
我得说你刚用读书计划把今年剩下的时间都订完了。=)
发布于 2018-08-16 02:40:34
我建议创建一个适当的init脚本,在终端多路复用器下运行您的脚本,如果脚本失败,重新启动脚本。然后,在需要时,您可以附加到正在运行的screen或tmux会话,并监视您的脚本。
在我的例子中,我有几个系统单元,它们在tmux下的控制台上运行golang程序,并将这些golang程序的生命周期(启动、重启失败、关机时停止等)委托给操作系统的“官方”init系统。
我使用了这个问题中的示例作为起点:https://askubuntu.com/questions/802189/how-to-run-tmux-screen-with-systemd-230
https://serverfault.com/questions/926537
复制相似问题