首先明確程序與進程的概念:
程序指存在磁盤中靜態的可執行文件。它通過用戶執行來觸發,觸發後加載到內存中成爲一個進程。爲了操作系統可以管理這個進程,因此進程還會被給予執行者權限、屬性等參數,還包含進程所需要的腳本與數據等。
每個進程都有一個特定的PID,對進程的控制很多都是基於PID實現的。例如,可以用kill指令給進程發送特定的signal。常見的signal有以下幾種:
代號 | 名稱 | 內容 |
---|---|---|
1 | SIGHUP |
啓動被終止進程,可以重新讀取相應配置文件,類似重新啓動 |
2 | SIGINT |
相當於用鍵盤的ctrl+c來中斷一個進程的進行 |
9 | SIGKILL |
強制中斷一個進程,如果該進程進行到一半,可能會有“半成品”遺留下來 |
15 | SIGTERM |
以正常方式結束一個進程。如果進程發送問題無法正常終止,則該信號沒用 |
17 | SIGSTOP |
相當於用鍵盤的ctrl+z來暫停 |
kill
必須使用PID(或者job number)。而killall
可以以“執行命令的名稱”來給予信號。一般,要刪除某個進程,可以使用kill PID
的方式。而要刪除某個服務呢,最簡單的辦法就是利用killall
,它可以將所有以某個命令名稱啓動的進程全部刪除。
SELinux
SELinux是Security Enhanced Linux的縮寫。它通過強制訪問控制MAC(Mandatory Access Control)的方法控制系統安全。MAC控制的主體是進程,目標則是該進程能否讀取文件資源。
安全上下文有點像系統內的rwx權限控制部分,它通過主體進程的domain(域)和文件資源的type(類型)匹配來確定進程的權限(域和類型都是在SELinux中定義的)