我在我的Ubuntu服务器上编写了一个小的Python脚本,以便在无头模式下运行Chrome浏览器并打开一个URL(参见下面的脚本)。目前,我的服务器上有两个不同的用户:假设是用户1和用户2。
我想要实现的目标:
1.使用用户1和用户2登录(两个终端会话)
1.完成后从用户1启动脚本
1.从user2启动脚本
如果我用user1启动脚本,一切都很正常。
import sys
import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
def getChromeDriver():
options = Options()
options.add_argument("--no-sandbox")
options.add_argument("--disable-dev-shm-usage")
options.add_argument("--headless")
options.add_argument("start-maximized")
options.add_argument("window-size=1900,1080")
s = Service("/home/dev/chromedriver")
driver = webdriver.Chrome(options=options, service=s)
return driver
driver = getChromeDriver()
driver.get("https://www.google.com")
time.sleep(3)
driver.quit()
当我使用su - user2
切换到user2并启动脚本时,我收到错误消息:DevToolsActivePort file doesn't exist
。我需要重新启动服务器才能从user2执行脚本。但是,我不能从用户1执行脚本(同样的问题)。奇怪的是,当我以根用户身份运行该脚本时(无需重启),它就能正常工作。
因此,简而言之:似乎只有在服务器重新启动后第一次执行脚本的用户才能运行该脚本。
如有任何帮助或提示,我们将不胜感激。
问候你,德波
1条答案
按热度按时间vwkv1x7d1#
我认为问题在于只有
user1
拥有对/tmp/Crashpad
的权限,因为该用户首先创建了该文件夹。root
可以在任何位置进行读/写,因此对于根用户,它可以正常工作。您的user2
无法从/tmp/Crashpad
读取/写入/tmp/Crashpad
,这会导致错误消息。要检查特定于用户的临时目录是否可以解决您的问题,可以在使用
user1
运行脚本后发出chmod -R 777 /tmp/Crashpad
。这将使该文件夹对任何人都可读/写。然后尝试使用user2
运行您的脚本,它应该可以工作。在Ubuntu上,您可以通过将
export TMPDIR=$HOME/tmp
行添加到.profile
或用户$HOME
文件夹中的.bashrc
文件来设置用户特定的临时目录。