我正在嘗試自動化 Linux Agent計算機的啓動過程。我需要運行位於兩個不同目錄中的兩個可執行文件,並將控制權交還給提示,以便繼續執行其他任務,例如執行grep以檢查兩個進程是否仍在運行。下面是在我試圖做這兩種不同的方式使用Python:執行2個阻塞進程並需要在同一個ssh會話中返回控制
代碼片段:(通過派生一個子進程)
import os
import pdb
def child():
cwd = os.getcwd()
os.chdir("THoT")
os.chdir("TH_Node")
print "Executing TH_Node.exe........."
command = "mono TH_Node.exe"
os.system(command)
os._exit(0)
def parent():
i = 0
while i < 1:
i = i + 1
newpid = os.fork()
if newpid == 0:
child()
else:
cwd = os.getcwd()
os.chdir("THoT")
os.chdir("TH_Protocol")
print "Executing TH_Protocol.exe........."
command1 = "mono TH_Protocol.exe"
os.system(command1)
parent()
代碼片斷2:(採用多處理)
import multiprocessing
import time
import sys
import os
import pdb
def TH_Protocol():
os.chdir("THoT")
os.chdir("TH_Protocol")
command = "mono TH_Protocol.exe"
os.system(command)
def TH_Node():
os.chdir("THoT")
os.chdir("TH_Node")
command1 = "mono TH_Node.exe"
os.system(command1)
if __name__ == '__main__':
d = multiprocessing.Process(name='TH_Protocol', target=TH_Protocol)
d.TH_Protocol = True
n = multiprocessing.Process(name='TH_Node', target=TH_Node)
n.TH_Protocol = False
d.start()
n.start()
d.join(1)
n.join()
問題是雖然我同時運行TH_Protocol.exe和TH_Node.exe進程,但我需要ssh到另一個會話來運行grep命令來檢查這兩個進程是否正在運行。我需要將控制返回到與運行我的python腳本的會話相同的會話中。我試圖使用subprocess.Popen,但我面臨同樣的問題。有什麼辦法可以解決這個問題嗎?
聽起來你只是想要(a)在你的ssh會話的後臺運行這個腳本,或者(b)有一個線程或進程以某種方式響應你,而另一個線程正在等待兩個後臺進程。這些都是微不足道的,但我不知道你想要哪一個。 – abarnert
另外,請修復您的格式。閱讀所有在同一級別縮進的代碼是非常困難的 - 有時這會掩蓋你希望人們修復的錯誤。 – abarnert