我希望能夠啓動一個進程,然後能夠將其殺死之後有沒有辦法用python啓動/停止linux進程?
7
A
回答
8
看看subprocess
模塊。 您也可以通過os
模塊使用低級基元,如fork()
。
3
3
使用子模塊的簡單函數:
def CMD(cmd) :
p = subprocess.Popen(cmd, shell=True,
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
close_fds=False)
return (p.stdin, p.stdout, p.stderr)
0
看到原始的fork()和模塊subprocess,multiprocessing文檔,multithreading
0
如果您需要與子相互作用過程中,我推薦pexpect模塊(link text)。您可以向流程發送輸入,接收(或「期望」)輸出,您可以關閉流程(使用force = True發送SIGKILL)。
13
這是一個小小的python腳本,它啓動一個進程,檢查它是否正在運行,等待一段時間,殺死它,等待它終止,然後再次檢查。它使用'kill'命令。 python子進程的版本2.6有一個kill函數。這是寫在2.5。
import subprocess
import time
proc = subprocess.Popen(["sleep", "60"], shell=False)
print 'poll =', proc.poll(), '("None" means process not terminated yet)'
time.sleep(3)
subprocess.call(["kill", "-9", "%d" % proc.pid])
proc.wait()
print 'poll =', proc.poll()
定時輸出顯示它在大約3秒後終止,而不是60表示睡眠呼叫提示。
$ time python prockill.py
poll = None ("None" means process not terminated yet)
poll = -9
real 0m3.082s
user 0m0.055s
sys 0m0.029s
相關問題
- 1. 有沒有辦法在暫停狀態下啓動進程?
- 2. 有沒有辦法用bat文件啓動/停止oracle 12c?
- 3. 有沒有辦法停止啓動的功能?
- 4. 有沒有辦法多次啓動和停止SwingWorker ..?
- 5. Linux守護進程停止啓動 - 停止守護進程
- 6. 有沒有辦法用遠程工作目錄啓動進程?
- 7. 有沒有辦法停止magento索引器進程?
- 8. 有沒有辦法停止couchdb索引器進程?
- 9. 有沒有辦法從Eclipse啓動/停止/重新啓動REMOTE Tomcat服務器?
- 10. 有沒有辦法停止OnItemSaving事件?
- 11. 有沒有辦法來防止:懸停?
- 12. 有沒有辦法停止MouseListener?
- 13. 有沒有辦法停止QGraphicsScene?
- 14. 有沒有辦法強制Firefox在新進程中啓動?
- 15. 有沒有辦法使用eclipse在特定點啓動和停止PHP代碼?
- 16. 有沒有辦法阻止用戶交互暫停動畫?
- 17. 啓動 - 停止守護進程和Python
- 18. 有沒有辦法停止進一步的標籤按鈕
- 19. 有沒有辦法在primefaces中自動啓動進度條?
- 20. 有沒有辦法暫停animateWithDuration一旦啓動?
- 21. 有沒有辦法從maven啓動EAR?
- 22. 如何在Python中使用子進程模塊啓動和停止Linux程序?
- 23. 有沒有辦法無意中停止Executor的線程?
- 24. 有沒有辦法以編程方式停止web.py?
- 25. 有沒有辦法停止和恢復C程序
- 26. 有沒有辦法立即停止線程?
- 27. 有沒有辦法在concurrent.futures中停止正在運行的進程?
- 28. 有沒有辦法阻止捕獲停止我的Java應用程序?
- 29. 有沒有辦法從Firefox和鉻啓動EXE應用程序
- 30. 有沒有辦法啓動一個Express應用程序?
您可以用'os.kill(..)'殺掉進程 – 2015-03-11 16:00:53
甚至'proc.terminate()'或'proc.kill()'因爲Python 2.6 – 2015-03-11 16:27:59