首頁>Club>
如何獲取電腦程序,並kill某個id程序?
4
回覆列表
  • 1 # 小小猿愛嘻嘻

    python獲取電腦程序其實很簡單,主要用到psutil這個包,下面我大概介紹一下,如何利用psutil獲取電腦程序,並kill掉某個id對應的程序,實驗環境CentOS7.0+python3.6,主要內容如下:

    1.下載安裝psutil,這個直接在終端輸入pip isntall psutil就行,如下:

    2.獲取電腦程序資訊,這裡可以獲取的資訊包括:程序ID,程序名name,程序bin路徑path,程序工作目錄cwd,程序狀態status,程序cpu使使用率,程序記憶體使用情況,程序執行緒數,程序建立時間等,主要程式碼如下:

    程式執行截圖如下,已經成功獲取到程序資訊:

    3.kill某個id對應的程序,這個就很簡單了,透過傳遞的pid引數,這個呼叫os.kill方法kill這個程序就行,如下:

    這裡假設我們要kill掉rpcbind這個進行,如下,程序號為783905:

    測試程式碼如下:

    程式執行截圖如下,已經成功kill掉rpcbind這個程序:

    至此,我們就完成了利用python來獲取電腦的程序。總的來說,整個過程挺簡單的,利用psutil這個包,我們可以快速的獲取到程序資訊,或者kill掉個程序,windows下面程式碼類似,只不過需要對應的許可權才可以檢視程序資訊,網上也有相關教程和資料,感興趣的可以搜一下,希望以上分享的內容能對你有所幫助吧。

  • 2 # 南極影解

    psutil 是 Python 的一個程序和系統工具集模組,透過使用 psutil,我們可以在 Python 中獲取作業系統中程序的相關資訊。

    工具介紹

    psutil(process and system utilities)是一個跨平臺的庫,github、官方文件

    我們可以用它來檢視系統執行程序以及資源利用率。它主要用於系統監控、過程資源分析和限制以及執行過程的管理。psutil 的主要功能結構如下圖所示

    它有三大功能模組,分別是 System related function、Processes 和 Windows Service。

    psutil 實現了UNIX命令列工具提供的許多功能,比如 top、free、netstat、kill 等,並且還相容各大作業系統:

    psutil 可以說是系統管理老大哥或者運維小夥不可或缺的必備模組。

    psutil 的安裝

    我們可以一邊翻閱 psutil 的官方文件,一邊編寫程式碼,這樣就能夠更快的學習。

    在 Python 環境下安裝,直接使用 pip 命令即可:

    但是,如果你只希望當前使用者可用,而不是整個系統所有使用者都能使用,你就需要調整你的命令:

    除此之外,它還提供瞭如 wget、curl 等多種安裝方式,具體可參閱文件的 install 部分,但是通常來說 命令已經滿足我們的需求了。

    系統相關操作

    它為我們提供了一些系統常用的操作內容 可參閱文件。其中包括了 CPU、記憶體、磁碟、網路、感測器和程序等方面。

    CPU 監控

    可以透過 cpu_times 模組對 cpu 資源進行檢視,比如:

    >>> import psutil

    >>> psutil.cpu_times()

    scputimes(user=477.29, nice=0.0, system=262.86, idle=6074.83)

    記憶體資訊獲取

    virtual_memory()將有關係統記憶體使用情況的統計資訊作為命名元組返回,包括以位元組表示的以下欄位。主要指標:

    總計:總物理記憶體。

    可用:可以在沒有系統進入交換的情況下立即提供給程序的記憶體。這是透過根據平臺對不同的記憶體值求和來計算的,並且它應該用於以跨平臺方式監視實際記憶體使用情況。

    程序資訊

    程序資訊文件定位,程序資訊也是我們比較關注的方面,psutil.pids() 可以返回當前執行的PID列表,例如:

    >>> psutil.pids()

    [1, 2, 3, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, ..., 32498]

    文件中有一個比較有意思的介紹

    我們可以按名稱過濾程序資訊,為什麼說他有意思呢?

    比如我們可以透過記錄 Python 的程序資訊、記憶體資源資訊、cpu 資源資訊,來分析我們所寫的 Python 程式碼在伺服器上的資源佔用情況。我們嘗試篩選出 Python 相關的 pid:

    >>> [p.info for p in psutil.process_iter(attrs=["pid", "name"]) if "python" in p.info["name"]]

    [{"name": "python3.6", "pid": 1447}]

    pid 1447 的這個程序,正好是我在控制檯中演示程式碼時,啟動的 Python 程序。

  • 中秋節和大豐收的關聯?
  • 18000流明led燈可信嗎?