使用来自python的linux'screen'命令

问题描述 投票:0回答:4

我正在集群上运行多个进程。我使用screen命令分别启动每个进程。它使我可以从群集断开连接,并在连接后查看我的进程。逐个启动所有屏幕是一项艰巨的任务。我想知道我们是否可以使用python脚本来做到这一点。脚本将打开新的外壳,创建屏幕并运行该过程并断开连接。将有关所有已启动进程的信息写入文本文件,例如进程ID启动命令等。

第二,我想停止进程,我想将pid放到文件中,然后运行一个命令,该命令将杀死所有提到的进程。

例如

smaple inut文件看起来像

   process_name      command
      123            python batch_training.py

我想以process_name中给出的名称开始屏幕,并且该命令将在相应的框架中执行。

谢谢

python linux process gnu-screen
4个回答
1
投票

您可以在python中给屏幕对象一个命令吗?

赞:

from os import system

command = 'screen ' + '/dev/ttyUSB0 38400'
result = system(command)

result('ATZ')???

0
投票

尝试在标准的Linux命令中使用“ os.system()”。例如:

os.system("screen nano")

0
投票

通常,在python中,您可以通过运行来运行系统命令

from os import system

然后

system('whatever_shell_command')

因此,您需要输入:

from os import system
system('screen')

不幸的是(这只是相关的)您不能同时运行多个命令,所以

system('shell_command ', argument)

将不起作用。

因此,如果要这样做,则需要将两个字符串连接起来:

full_command = 'shell_command ' + argument 
system(full_command)`

0
投票

[如果要在不打开屏幕会话的情况下运行命令,则还应在屏幕上使用-dmS选项。因此,如果您想使用python来做到这一点,您的代码可能如下所示:

import subprocess

subprocess.call(["screen", "-dmS", "screen_name_1", "top"])
subprocess.call(["screen", "-dmS", "screen_name_2", "top"])
subprocess.call(["screen", "-r"])
© www.soinside.com 2019 - 2024. All rights reserved.