2015-11-05 31 views
-2

我有5個python腳本,其中所有腳本都有主要功能。代碼是一個記錄從5 devices.basically流數據,代碼是這樣的[未滿代碼這裏]:退出一個按鍵的多個python文件

#!/urs/bin/env python 

import time 
import pexpect 

log = open('log.txt', 'w+') 
tool = pexpect.spawn(connection) 
start = time.time() 
while True: 
    try: 
     tool.expect('Notification handle = .*? \r', timeout=300) 
     a = tool.after 
     elapsed = time.time() - start 
     output = str(elapsed) + " " + a 
     log.write(output) 

    except KeyboardInterrupt: 
     tool.close() 
     log.close() 
     pass 

問題: 我有一次用下面的bash腳本運行5個腳本的腳本:

#!/usr/bin/env bash 
python a.py & 
python b.py & 

啓動腳本後只有一個終端窗口。但是當我運行bash腳本時,我想一次看到5個終端。

問題:

  1. 我怎麼能不幹就這5個腳本按鍵? 5個文件永遠處於while循環中。但除了這5個文件外,我的鍵盤中斷了。

  2. 啓動腳本後只有一個終端窗口。但是當我運行bash腳本時,我想一次看到5個終端。

  3. 比一次運行5個腳本更好的解決方案嗎? [使用Pexpect的,而循環數據流數據從5個器件登錄]

環境:Ubuntu的14,蟒2.7.6 非常感謝

+0

除非您告訴我們更多關於這些腳本正在做什麼的內容,否則我們無法告訴您是否存在「更好的解決方案」。 – John1024

+0

_「我怎樣才能一次性退出這5個腳本__用於按鍵__?_」一鍵按鍵「對您而言意味着什麼?要用bash或python做某事,通常需要編寫一個命令;一個按鍵是不夠的。交互式地,可以創建快捷方式,但完成方式通常取決於您所處的環境。 – John1024

+0

除非知道bash,否則無法在bash shell腳本中運行它們。從一個額外的Python程序運行它們,它必須首先捕獲一個按鍵,使用subprocess.call https://pymotw.com/2/subprocess/index.html#module-subprocess和psutil殺死新程序以及所有它是兒童,或運行每個程序作爲一個多處理過程,然後可能會被殺死https://pymotw.com/2/multiprocessing/basics.html#terminating-processes –

回答

1

可以使用的信號處理程序,並等待

#! /bin/bash 

trap 'kill %1 %2 %3 %4 %5' INT 

python a.py& 
python b.py& 
python c.py& 
python d.py& 
python e.py& 

echo "Waiting..." 
wait 
echo "Done." 
+0

你可以檢查我的代碼嗎?如何運行「kill%1 ...%5」來停止並正確寫入文件而不丟失數據? %1代表什麼? – ediiiiiiii