我正在使用Selenium在Ubuntu EC2机器上运行一个非常简单的脚本。
我将下一段代码放在一个循环中,因为脚本应该永远在后台运行:
from selenium import webdriver
def play():
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--headless")
chrome_options.add_argument("--disable-gpu")
chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("enable-automation")
chrome_options.add_argument("--disable-infobars")
chrome_options.add_argument("--disable-dev-shm-usage")
try:
driver = webdriver.Chrome(executable_path='/usr/bin/chromedriver', options=chrome_options)
except Exception as e:
with open(f'{os.getcwd()}/error_log.txt', 'a') as f:
f.write(str(datetime.datetime.now()))
f.write(str(e))
当使用ssh连接到示例时,脚本可以完美地运行,但是当断开连接时,我得到以下错误:
Message: Service /usr/bin/chromedriver unexpectedly exited. Status code was: 1
重新连接后,脚本再次正常工作,没有任何接触。
我运行的脚本如下:
nohup python3 script.py &
2条答案
按热度按时间pjngdqdw1#
当您从ssh运行一个进程时,它被绑定到您的终端会话,因此一旦您关闭会话,所有从属进程都将终止。
有很多选择如何处理。几乎所有的都意味着你安装了一些额外的工具,可能是特定于你的特定操作系统。
下面是一些关于这个问题的不错的帖子:
https://serverfault.com/questions/463366/does-getting-disconnected-from-an-ssh-session-kill-your-programs
https://askubuntu.com/questions/8653/how-to-keep-processes-running-after-ending-ssh-session
如何在不终止正在运行的进程的情况下分离ssh会话#:~:text= ssh到您的远程框中,但让您的进程继续运行。
esyap4oy2#
您正在运行的命令已附加到您的shell会话。为了保持脚本运行,请使用nohup,这样即使您断开了shell会话,进程也可以继续。
在计算机上尝试以下操作
参见原答案here