一、pid的概念
pid是進程標識符(process identifier)的縮寫,它是一個唯一性的數字,用於標識正在系統中運行的一個進程。每個進程都會被分配一個pid,可以通過pid找到系統中對應的進程。
在Linux系統上,可以通過命令“ps -A”查看所有正在運行的進程及其對應的pid。使用“kill -l”可以查看系統支持的所有信號。
二、使用kill命令殺死進程
kill命令是Linux系統提供的一個工具,用於向指定的進程發送信號。如果不指定信號類型,默認使用15號信號(SIGTERM),一般情況下,進程在接收到SIGTERM信號後,會進行清理工作,並正常退出。如果想要強制關閉進程,可以使用9號信號(SIGKILL)。
使用kill命令需要知道要殺死的進程的pid,例如要殺死pid為1234的進程,可以使用以下命令:
kill 1234
如果進程無法正常退出,可以使用“kill -9”命令強制殺死進程:
kill -9 1234
請注意,使用“kill -9”命令會強制殺死進程,會導致進程無法完成清理和釋放資源的工作,可能會對系統造成一定的影響。
三、使用pgrep和pkill命令根據進程名殺死進程
如果不知道要殺死的進程的pid,可以使用pgrep命令根據進程名來查找對應的pid。pgrep命令會返回所有進程名中包含指定關鍵字的進程的pid。
例如,要查找所有名字中包含“firefox”的進程的pid,可以使用以下命令:
pgrep firefox
如果想要殺死所有名字中包含“firefox”的進程,可以使用pkill命令。在默認情況下,pkill命令使用15號信號(SIGTERM)殺死進程,可以通過選項“-9”來使用9號信號。
以下命令將會殺死所有名字中包含“firefox”的進程,並使用15號信號:
pkill firefox
以下命令將會使用9號信號殺死所有名字中包含“firefox”的進程:
pkill -9 firefox
四、使用Python實現根據pid殺死進程
Python語言提供了一個os模塊,提供了很多與操作系統交互的函數,包括殺死進程的功能。使用os.kill(pid, sig)函數可以向指定的進程發送信號,從而實現殺死進程的功能。
以下是一個使用Python實現根據進程名殺死進程的示例代碼:
import os import signal def kill_process_by_name(process_name, signal_type=signal.SIGTERM): for line in os.popen("ps ax | grep " + process_name + " | grep -v grep"): fields = line.split() pid = fields[0] os.kill(int(pid), signal_type) kill_process_by_name("firefox")
該代碼會查找所有名字包含“firefox”的進程的pid,並使用默認的15號信號(SIGTERM)殺死進程。
如果想要使用9號信號(SIGKILL)殺死進程,可以將第二個參數傳遞給kill_process_by_name函數:
kill_process_by_name("firefox", signal.SIGKILL)
五、小結
使用kill命令可以根據pid殺死進程,使用pgrep和pkill命令可以根據進程名殺死進程。在Python中,可以使用os.kill函數實現殺死進程的功能。在使用“kill -9”命令時,需要注意可能會對系統造成一定的影響,請謹慎使用。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/312652.html