Preface:
底下的範例代碼利用 ps 命令列出所有的 process 後再使用 grep 找出有關鍵字的行數, 最後利用 kill 將這些有關鍵字的 process 刪除.
Sample Code:
首先要在 Python 中執行外部命令, 要使用 subprocess 模組. 底下代碼利用該模組呼叫 "ps -aux" 列出執行中的 process, 接著利用 pipe 執行 "grep" 取出有 "Test.jar" 關鍵字的行數:
有了這些行數, 接著便是取出該 Process 的 pid 方便後續 kill 使用. 首先某一行可能長成:
那個 "23338" 便是該 process 的 pid, 至於每個欄位對應的意義, 可以參考 鳥哥在程序管理一章的說明. 所以第一步便是將 output 切成一行行, 在對每一行取出我們要的 pid:
有了這些 process 的 pid 接著要刪除它們就易如反掌拉 ^_^. 完整代碼如下:
底下的範例代碼利用 ps 命令列出所有的 process 後再使用 grep 找出有關鍵字的行數, 最後利用 kill 將這些有關鍵字的 process 刪除.
Sample Code:
首先要在 Python 中執行外部命令, 要使用 subprocess 模組. 底下代碼利用該模組呼叫 "ps -aux" 列出執行中的 process, 接著利用 pipe 執行 "grep" 取出有 "Test.jar" 關鍵字的行數:
有了這些行數, 接著便是取出該 Process 的 pid 方便後續 kill 使用. 首先某一行可能長成:
那個 "23338" 便是該 process 的 pid, 至於每個欄位對應的意義, 可以參考 鳥哥在程序管理一章的說明. 所以第一步便是將 output 切成一行行, 在對每一行取出我們要的 pid:
有了這些 process 的 pid 接著要刪除它們就易如反掌拉 ^_^. 完整代碼如下:
- #!/usr/bin/python
- import subprocess, re
- from subprocess import Popen
- from subprocess import PIPE
- keyword = "Test.jar" # 設置 grep 的關鍵字
- ptn = re.compile("\s+")
- p1 = Popen(["ps", "-aux"], stdout=PIPE)
- p2 = Popen(["grep", keyword], stdin=p1.stdout, stdout=PIPE)
- p1.stdout.close()
- output = p2.communicate()[0]
- print("Output:\n{0}".format(output))
- lines = output.strip().split("\n")
- for line in lines:
- items = ptn.split(line)
- print("kill {0}...".format(items[1], subprocess.call(["kill", items[1]])))
沒有留言:
張貼留言