第十六章 程序管理与selinux初探
在 Linux 系統當中:『觸發任何一個事件時,系統都會將他定義成為一個程序,並且給予這個程序一個 ID ,稱為 PID,同時依據啟發這個程序的使用者與相關屬性關係,給予這個 PID 一組有效的權限設定。』 從此以後,這個 PID 能夠在系統上面進行的動作,就與這個 PID 的權限有關了!
使用 & 直接將指令丟到背景中执行,再使用资料流重导向就输出信息传送到某个文件。
將『目前』的工作丟到背景中『暫停』:[ctrl]-z。
[ctrl]-C用于终止进程。
[root@study ~]# jobs [-lrs]
選項與參數:
-l :除了列出 job number 與指令串之外,同時列出 PID 的號碼;
-r :僅列出正在背景 run 的工作;
-s :僅列出正在背景當中暫停 (stop) 的工作。
範例一:觀察目前的 bash 當中,所有的工作,與對應的 PID
[root@study ~]# jobs -l
[1]- 14566 Stopped vim ~/.bashrc
[2]+ 14567 Stopped find / -print
[root@study ~]# fg %jobnumber
選項與參數:
%jobnumber :jobnumber 為工作號碼(數字)。注意,那個 % 是可有可無的!
範例一:先以 jobs 觀察工作,再將工作取出:
[root@study ~]# jobs -l
[1]- 14566 Stopped vim ~/.bashrc
[2]+ 14567 Stopped find / -print
[root@study ~]# fg <==預設取出那個 + 的工作,亦即 [2]。立即按下[ctrl]-z
[root@study ~]# fg %1 <==直接規定取出的那個工作號碼!再按下[ctrl]-z
[root@study ~]# jobs -l
[1]+ 14566 Stopped vim ~/.bashrc
[2]- 14567 Stopped find / -print
讓工作在背景下的狀態變成運作中: bg
[root@study ~]# kill -signal %jobnumber
[root@study ~]# kill -l
選項與參數:
-l :這個是 L 的小寫,列出目前 kill 能夠使用的訊號 (signal) 有哪些?
signal :代表給予後面接的那個工作什麼樣的指示囉!用 man 7 signal 可知:
-1 :重新讀取一次參數的設定檔 (類似 reload);
-2 :代表與由鍵盤輸入 [ctrl]-c 同樣的動作;
-9 :立刻強制刪除一個工作;
-15:以正常的程序方式終止一項工作。與 -9 是不一樣的。
範例一:找出目前的 bash 環境下的背景工作,並將該工作『強制刪除』。
[root@study ~]# jobs
[1]+ Stopped vim ~/.bashrc
[2] Stopped find / -print
[root@study ~]# kill -9 %2; jobs
[1]+ Stopped vim ~/.bashrc
[2] Killed find / -print
# 再過幾秒你再下達 jobs 一次,就會發現 2 號工作不見了!因為被移除了!
範例二:找出目前的 bash 環境下的背景工作,並將該工作『正常終止』掉。
[root@study ~]# jobs
[1]+ Stopped vim ~/.bashrc
[root@study ~]# kill -SIGTERM %1
# -SIGTERM 與 -15 是一樣的!您可以使用 kill -l 來查閱!
# 不過在這個案例中, vim 的工作無法被結束喔!因為他無法透過 kill 正常終止的意思!
kill 後面接的數字預設會是 PID ,如果想要管理 bash 的工作控制,就得要加上 %數字 了, 這點也得特別留意才行喔!
如果你想要讓在背景的工作在你登出後還能夠繼續的執行,那麼使用 nohup 搭配 & 是不錯的運作情境喔!
既然程序這麼重要,那麼我們如何查閱系統上面正在運作當中的程序呢?很簡單啊! 利用靜態的 ps 或者是動態的 top,還能以 pstree 來查閱程序樹之間的關係喔!
一個是只能查閱自己 bash 程序的『 ps -l 』一個則是可以查閱所有系統運作的程序『 ps aux 』!注意,你沒看錯,是『 ps aux 』沒有那個減號 (-) !
free :觀察記憶體使用情況
netstat :追蹤網路或插槽檔