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

时间:2014-11-23 17:29:17

标签: python linux process gnu-screen

我在群集上运行多个进程。 我使用screen命令分别启动每个进程。 它允许我断开与群集的连接,并在连接时查看我的进程。 逐个启动所有屏幕是一项痛苦的工作。 我想知道我们是否可以使用python脚本。 脚本打开新shell创建屏幕运行进程并断开连接。 在文本文件中写入有关所有已启动进程的信息,如进程ID启动命令等。

其次,我想停止进程,我想把pid放到文件中,然后运行一个命令来杀死所有提到的进程。

例如

smaple inut文件看起来像

   process_name      command
      123            python batch_training.py

我想使用process_name中给出的名称启动屏幕,并且将在相应的框架中执行命令。

由于

4 个答案:

答案 0 :(得分:1)

你能在python中给屏幕对象一个命令吗?

像:

from os import system

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

result('ATZ')???

答案 1 :(得分:1)

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

import subprocess

subprocess.call(["screen", "-dmS", "screen_name_1", "top"])
subprocess.call(["screen", "-dmS", "screen_name_2", "top"])
subprocess.call(["screen", "-r"])

答案 2 :(得分:0)

尝试使用" os.system()"使用标准Linux命令。 e.g:

os.system("screen nano")

答案 3 :(得分: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)`