歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> Linux基本配置和管理 8 程序管理與SELinux初探

Linux基本配置和管理 8 程序管理與SELinux初探

日期:2017/3/3 16:17:57   编辑:關於Linux

一 什麼是進程

1 在Linux系統當中,觸發任何一個事件時,系統都會將它定義成為一個進程,並且給予這個進程一 個ID,稱為PID,同時依據觸發這個進程的用戶與相關屬性關系,給予這個PID一組有效的權限設置

2 我們說過,系統應該是僅認識二進制文件的,那麼當我們要讓系統工作的時候,當然就需要啟動一 個二進制文件,那個二進制文件就是程序

3 程序:通常為二進制程序放置在存儲媒介中(如硬盤,光盤,軟盤,磁帶等),以物理文件的形式 存在

進程:程序被觸發後,執行者的權限與屬性,程序的程序代碼與所需數據等都會被加載到內存中,操 作系統並給予這個內存中的單元一個標識符PID,可以說,進程就是一個正在運行中的程序

4 連續執行兩個bash後,第二個bash的父進程就是前一個bash,因為每個進程都有一個PID,那某個 進程的父進程可以通過PPID來判斷

5 在Linux的過程調用中通常稱為fork-and-exec的流程:進程都會通過父進程以復制fork的方式產生 一個一模一樣的進程,然後被復制出來的子進程再以exec的方式來執行實際要進行的進程,最終就成為 一個子進程的存在

6 系統先以fork的方式復制一個與父進程一模一樣暫存進程,這個進程與父進程唯一的區別就是PID 不同,但是這個暫存進程還會多一個PPID參數,然後暫存進程開始以exec的方式加載實際要執行的程序 ,最終成為子進程

二 工作管理

1 在進行工作管理的行為中,其實每個工作都是目前bash的子進程,即彼此之間是有相關性的。即我 們無法以工作管理的方式從tty1的環境去管理tty2的bash

2 假設我只有一個終端,因此在可以出現提示符讓你操作的環境就稱為前台,至於其他工作就可以讓 你放入後台去暫停或運行。要注意的是,放入後台的工作想要運行時,它必須不能夠與用戶互動。

3 總之要進行工作管理的限制是:

1 這些工作所觸發的進程必須來自於你shell的子進程

2 前台:你可以控制與執行命令的這個環境稱為前台工作

3 後台:可以自行運行的工作,你無法使用Ctrl+c終止它,可使用bg/fg調用該工作

4 後台中“執行”的進程不能等待終端的輸入

4 直接將命令丟到後台中“執行”的&,這個&代表的是“將工作丟到後台 中,不怕被Ctrl+c中斷

5 將目前的工作丟到後台中“暫停”,Ctrl+z

6 在vi的一般模式下,按下Ctrl+z這兩個按鍵,屏幕上面會出現[1],表示這是第一個工作,而那個+ 代表最近一個被丟進後台的工作,且目前在後台下默認會被取用的那個工作。而Stopped表示的是這個工 作是暫停的

7 其實後台的工作+代表的是最近被放到後台的工作號碼,-代表最近最後第二個被放置到後台的工作 號碼,而超過最後三個以上的工作,就不會有+/-符號存在了

8 將後台的工作拿到前台來處理fg,fg %jobnumber,jobnumber是工作號碼

9 讓工作在後台下的狀態變成運行中bg,bg %jobnumber,jobnumber是工作號碼

10 管理後台的工作kill

kill -signal %jobnumber

-1,重新讀取一次參數的配置文件

-2,代表由鍵盤輸入Ctrl+c同樣的操作

-9,立刻強制刪除一個工作

-15,以正常的程序終止一個工作,並將該工作強制刪除

11 kill後面接的數字默認會是PID,如果想要管理bash的工作控制,就得要加上%數字了

12 脫機管理問題

1 我們在工作管理中所提到的“後台”指的是在終端機模式下可以避免Ctrl+c中斷的一 個情境,並不是放到系統的後台中

2 我們可以使用nohup命令實現真正的放到系統後台來運行

nohup 命令與參數 -->在終端機的前台工作

nohup 命令與參數 & -->在系統的後台工作

3 nohup並不支持bash內置的命令,因此你的命令必須要是外部命令才行

4 如果我們想要讓在後台的工作在你注銷後還能夠繼續執行,可以使用nohup命令

三 進程管理

1 進程的查看分為兩種靜態的ps以及動態的top

2 ps相關命令

ps aux -->查看系統所有的進程數據

ps -lA -->查看所有系統的數據

ps axjf -->連同部分進程樹的狀態

3 通常,造成僵屍進程的成因是因為該進程應該執行完畢,或者是因故應該要終止了,但是該進程的 父進程卻無法完整的將該進程結束掉,而造成那個進程一直在內存中。通過ps axu命令查看進程狀態, 如果在某個進程的最末尾有<defunct>就說明是僵屍進程

4 top動態的查看進程的變化,top -d 數字 -->數字表示要幾秒鐘刷新一下

5 一般來說我們經常需要找到最損耗資源的那個進程,大多數都是利用top這個程序,然後強制與CPU 使用資源來排序

6 所有的進程都是依附在init這個進程下面的,init這個進程的PID是1號,因為它是由Linux內核所 主動調用的第一個進程

7 系統資源的查看

1 free 查看內存的使用情況

2 uname 查看系統與內核相關信息

3 uptime 查看系統啟動時間與工作負載

4 netstat 跟蹤網絡

5 dmesg 分析內核產生的信息

四 SELinux初探

1 什麼是SELinux呢?其實就是安全強化Linux的意思

2 SELinux是通過MAC的方式來控管進程,它控制的主體是進程,而目標則是該進程能夠讀取的文件資 源

3 SELinux支持三種模式

ecforcing:強制模式,代表SELinux正在運行中

permissive:寬容模式,代表SELinux正在運行中,不過僅會有警告信息並不會有實際限制 domain/type的訪問

disabeld:關閉,SELinux並沒有實際運行

4 我們可以通過getenforce來查看當前的SELinux是哪一種模式

5 如果要啟動SELinux的話,我們應該修改/etc/selinux/config,將這個文件的SELINUX=enforing設 置妥當,並且指定SELINUXTYPE=targeted這一設置,並且到/boot/grub/menu.lst這個文件去,看看內核 有沒有關閉SELinux

 

Copyright © Linux教程網 All Rights Reserved