使用Python在Windows和Linux上終止進(jìn)程的簡(jiǎn)易腳本分享
引言
終止系統(tǒng)中的進(jìn)程在日常運(yùn)維或開發(fā)中是常見需求,但傳統(tǒng)方法常讓人頭疼:圖形化工具(如Windows任務(wù)管理器或Linux的System Monitor)操作繁瑣,難以批量處理;命令行工具(如taskkill或kill)需要記住復(fù)雜參數(shù),還要手動(dòng)查找進(jìn)程ID,效率低下且易出錯(cuò)。今天,我將分享兩個(gè)Python腳本,分別用于Windows和Linux系統(tǒng),只需輸入進(jìn)程名即可終止目標(biāo)進(jìn)程。這些腳本簡(jiǎn)單易用,適合系統(tǒng)管理員和開發(fā)人員。
腳本功能
這兩個(gè)腳本使用Python的psutil庫,能夠:
- 接受用戶輸入的進(jìn)程名(忽略大小寫)。
- 查找所有匹配的進(jìn)程。
- 在Windows上使用
taskkill命令強(qiáng)制終止進(jìn)程。 - 在Linux上使用
SIGTERM信號(hào)優(yōu)雅終止進(jìn)程。 - 處理常見錯(cuò)誤,如權(quán)限不足或進(jìn)程不存在。
前提條件
在使用腳本之前,需要安裝psutil庫:
pip install psutil
Windows腳本
以下是Windows平臺(tái)的腳本,使用taskkill /F命令強(qiáng)制終止進(jìn)程:
import psutil
import os
import signal
import subprocess
def kill_process_by_name(process_name):
try:
process_name = process_name.lower()
found = False
for proc in psutil.process_iter(['name']):
if proc.info['name'].lower() == process_name or \
proc.info['name'].lower() == process_name + '.exe':
try:
subprocess.run(['taskkill', '/PID', str(proc.pid), '/F'], check=True)
print(f"Terminated process {proc.info['name']} (PID: {proc.pid})")
found = True
except (psutil.AccessDenied, subprocess.CalledProcessError):
print(f"Failed to terminate process {proc.info['name']} (PID: {proc.pid}): Access denied")
if not found:
print(f"No process found with name: {process_name}")
except Exception as e:
print(f"Error occurred: {str(e)}")
if __name__ == "__main__":
process_name = input("Enter the process name to kill (e.g., notepad): ")
kill_process_by_name(process_name)
使用方法
- 保存腳本為
kill_process_windows.py。 - 運(yùn)行腳本:
python kill_process_windows.py
- 輸入進(jìn)程名(如
notepad或chrome),腳本會(huì)自動(dòng)處理.exe擴(kuò)展名并終止匹配的進(jìn)程。
示例輸出
Enter the process name to kill (e.g., notepad): notepad Terminated process notepad.exe (PID: 1234)
Linux腳本
以下是Linux平臺(tái)的腳本,使用SIGTERM信號(hào)終止進(jìn)程:
import psutil
import os
import signal
def kill_process_by_name(process_name):
try:
process_name = process_name.lower()
found = False
for proc in psutil.process_iter(['name']):
if proc.info['name'].lower() == process_name:
try:
os.kill(proc.pid, signal.SIGTERM)
print(f"Terminated process {proc.info['name']} (PID: {proc.pid})")
found = True
except (psutil.AccessDenied, OSError):
print(f"Failed to terminate process {proc.info['name']} (PID: {proc.pid}): Access denied")
if not found:
print(f"No process found with name: {process_name}")
except Exception as e:
print(f"Error occurred: {str(e)}")
if __name__ == "__main__":
process_name = input("Enter the process name to kill (e.g., firefox): ")
kill_process_by_name(process_name)
使用方法
- 保存腳本為
kill_process_linux.py。 - 運(yùn)行腳本:
python kill_process_linux.py
- 輸入進(jìn)程名(如
firefox或gedit),腳本會(huì)發(fā)送SIGTERM信號(hào)終止進(jìn)程。
示例輸出
Enter the process name to kill (e.g., firefox): firefox Terminated process firefox (PID: 5678)
注意事項(xiàng)
- 權(quán)限問題:終止某些系統(tǒng)進(jìn)程可能需要管理員權(quán)限(Windows)或root權(quán)限(Linux)。建議以管理員身份運(yùn)行腳本。
- 數(shù)據(jù)丟失風(fēng)險(xiǎn):Windows腳本使用強(qiáng)制終止(
/F),可能導(dǎo)致未保存的數(shù)據(jù)丟失。Linux腳本使用SIGTERM進(jìn)行優(yōu)雅終止,但若進(jìn)程未響應(yīng),可修改為SIGKILL(需謹(jǐn)慎)。 - 進(jìn)程名匹配:腳本忽略大小寫,并為Windows自動(dòng)處理
.exe擴(kuò)展名。若進(jìn)程名不唯一,可能終止所有匹配的進(jìn)程。 - 錯(cuò)誤處理:腳本會(huì)捕獲權(quán)限錯(cuò)誤和找不到進(jìn)程的情況,并提供清晰的錯(cuò)誤提示。
擴(kuò)展可能性
這兩個(gè)腳本是基礎(chǔ)實(shí)現(xiàn),可以根據(jù)需求擴(kuò)展:
- 添加正則表達(dá)式支持,匹配更復(fù)雜的進(jìn)程名。
- 增加確認(rèn)提示,避免意外終止進(jìn)程。
- 支持批量終止多個(gè)進(jìn)程名。
- 在Linux上支持
SIGKILL作為強(qiáng)制終止的備選。
總結(jié)
這兩個(gè)Python腳本為Windows和Linux用戶提供了一種簡(jiǎn)單的方式來終止進(jìn)程,只需輸入進(jìn)程名即可。它們利用psutil庫實(shí)現(xiàn)了跨平臺(tái)的進(jìn)程管理,適合快速調(diào)試或自動(dòng)化任務(wù)。希望這些腳本能幫助你更高效地管理系統(tǒng)資源!
到此這篇關(guān)于使用Python在Windows和Linux上終止進(jìn)程的簡(jiǎn)易腳本分享的文章就介紹到這了,更多相關(guān)Python終止Windows和Linux進(jìn)程內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用numpy對(duì)數(shù)組求平均時(shí)如何忽略nan值
這篇文章主要介紹了使用numpy對(duì)數(shù)組求平均時(shí)如何忽略nan值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02
使用python找出list列表中相同元素(指定元素)的所有索引
這篇文章主要給大家介紹了關(guān)于使用python找出list列表中相同元素(指定元素)的所有索引,在平時(shí)開發(fā)過程中經(jīng)常遇到需要在數(shù)據(jù)中獲取特定的元素索引的信息,需要的朋友可以參考下2023-08-08
基于Python實(shí)現(xiàn)貪吃蛇小游戲(附源碼)
本次我們將編寫一個(gè)貪吃蛇的游戲。通過鍵盤上、下、左、右控制小蛇上、下、左、右移動(dòng),吃到食物后長(zhǎng)度加1;蛇頭碰到自身或窗口邊緣,游戲失敗,需要的可以參考一下2022-11-11
淺談pytorch中stack和cat的及to_tensor的坑
這篇文章主要介紹了pytorch中stack和cat的及to_tensor的坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-05-05
Python實(shí)現(xiàn)Wordcloud生成詞云圖的示例
這篇文章主要介紹了Python實(shí)現(xiàn)Wordcloud生成詞云圖的示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03
python學(xué)習(xí)之hook鉤子的原理和使用
這篇文章主要為大家詳細(xì)介紹了python學(xué)習(xí)之hook鉤子的原理和使用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-10-10
使用Python Fast API發(fā)布API服務(wù)的過程詳解
這篇文章主要介紹了使用Python Fast API發(fā)布API服務(wù),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-04-04

