在Python中通过ssh运行popen时,终端窗口不会保持打开状态

2024-04-19 18:10:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在写一个在Linux服务器上运行的Python程序。它监视一些日志文件,并根据给定的关键字在GUI中显示来自该日志文件的行。在

我添加了一个新功能,打开一个终端窗口,其中“less”显示用户在我的程序中双击的行。在

我的问题是: 当我在本地(在计算机上)运行我的程序时,它运行得很好。 但是当我通过SSH连接到主服务器上运行程序时, 当我看到一个程序,我很快就打开了一个双窗口。在

以下是负责打开“Less Terminal”的代码:

p = subprocess.Popen(args = ["gnome-terminal", "--command = less -p " + "\"" +searchString + "\"" " -j 10 " + "\"" + path + "\""], stdout = subprocess.PIPE) 

我怎么才能让它开着呢?在

另外,如果我添加shell = TRUE,它只会打开一个新的终端窗口,而没有less结果。在


Tags: 文件用户程序功能服务器终端linux计算机
2条回答

对我有用

if sys.platform != "win32": sp.Popen(command.split(), shell=False)
else: sp.Popen(command.split(), shell=True)

我的问题与ssh无关;我设法在本地计算机上重新创建了它。在本地测试程序时,我使用短模式字符串进行测试,但是当我移动到服务器并开始使用实际字符串时,它们太大了!在

结果是:我给了less一个大于99个字符的模式。我得到了:“ungetcc overflow”,一个known bug,它随后在less的438版本中修复了。在

相关问题 更多 >