Linux程式管理與SELinux初探

來源:互聯網
上載者:User

Linux程式管理與SELinux初探 1 什麼是程式程式檔案:通常以二進位檔案的形式存放在儲存介質中程式與許可權:程式被執行時,執行者的許可權與屬性,程式的代碼,(二進位檔案內容)等資料會被作業系統載入到記憶體中, 作業系統給予這個記憶體中的單元一個標識符(PID)。  www.2cto.com   子程式與父程式:登入系統後會取得一個shell,例如bash程式。在這個bash中啟動另一個bash,新啟動的bash即是原來bash 的子程式,原來的bash是新bash的父程式。可以通過Parent PID(PPID)得知一個程式的父程式。 下面來看一個例子:minix007:~$ ps -lF S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD0 S  1000  7538  7530  5  80   0 -  2315 wait   pts/1    00:00:00 bash0 R  1000  7598  7538  0  80   0 -  1177 -      pts/1    00:00:00 psminix007:~$ bashminix007:~$ ps -lF S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD0 S  1000  7538  7530  0  80   0 -  2315 wait   pts/1    00:00:00 bash0 S  1000  7599  7538  9  80   0 -  2316 wait   pts/1    00:00:00 bash0 R  1000  7655  7599  0  80   0 -  1177 -      pts/1    00:00:00 ps第一次輸入ps -l,發現兩個程式,第一個bash是我們正在使用的shell,PID為7538,第二個為ps,是我們剛剛在這個 shell中啟動的程式,可以看到ps的PPID是7538,即其父程式PID為7538。 第二個命令啟動了另一個bash,可以看到此bash的PID為7599。其PPID為7538,即正在使用的shell的PID 第三個命令啟動了ps程式,可以看到這個ps程式的PPID為7599,即其父程式為剛剛啟動的bash。  www.2cto.com  fork and exec 程式的啟動過程:先由父程式fork一個一模一樣的子程式,此子程式再以exec的方式執行真正要執行的程式常駐記憶體的程式: 平時執行的命令,如ls,執行一次就完了,但是有些程式需要一直執行,比如檢測程式,這些程式就 常駐在記憶體。Linux的多人多任務環境 Linux可以供多人同時登入系統,並且互不干擾,每個人像是在獨立地使用電腦。Linux中預設提供了六個命令列終端和 一個圖形終端:tty1~tty7。其中tty7是圖形終端。Ubuntu中可以通過Ctrl+Alt+F1~F7切換這7個終端。當一個終端中程式 死掉時,可以切換到其它終端,用ps -aux查看哪個程式出錯,然後kill掉.2 工作管理(job control)將程式放入後台執行為什麼:如果一個程式執行時間很長,我們在shell中執行它,就要等待它執行完以後才能輸入下一個命令,Linux是多 任務的作業系統,這樣一來,就變成了一個命令一個命令地執行,為了執行一個程式的同時可以繼續使用終端,可以將 程式放入後台執行,這樣一來就不影響終端在前台的使用。  www.2cto.com  怎麼做:可以在要執行的程式命令後加上 & 符號,例如:tar -jcv -f tctar.tar.bz2 t.c &注意:後台執行的程式不能和使用者互動,不能用ctrl+c中斷。在vim中輸入Ctrl+Z可以將vim暫時調入後台,從而可在 前台執行命令,又不退出vim。觀察背景程式狀態: jobs$ jobs[1]+  Stopped                 vim t.c$ jobs -l[1]+  8705 Stopped                 vim t.c將背景程式調入前台執行:fg %num # num是job的id號$ fg %1vim t.c將背景程式暫停與恢複執行Ctrl+z:暫停bg %num:恢複後台中暫停程式將程式停止或重啟:kill$ kill -9 %1  #強制移除1號job離線時仍然執行:nohup$ nohup ./foo.sh &此時,即使你登出,系統仍然會執行foo.sh程式3 程式管理程式觀察ps -l :觀察自己bash中的程式F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD0 S  1000  8594  8583  0  80   0 -  2318 wait   pts/1    00:00:00 bash0 T  1000  8828  8594  0  80   0 - 12020 signal pts/1    00:00:00 vim0 R  1000  8877  8594  0  80   0 -  1177 -      pts/1    00:00:00 psF:程式許可權S:程式狀態R:運行態,S:睡眠態,可喚醒,D:不可喚醒的睡眠態,如等待I/OT:停止態,Z:殭屍態,程式已經終止但無法被移出記憶體UID:啟動程式的使用者的IDPID:程式標識  www.2cto.com  PPID:父程式標識C:cpu使用率PRI/NI:與優先順序有關ADDR/SZ/WCHAN:與記憶體有關,ADDR:記憶體哪個部分,SZ:佔用記憶體大小,WCHAN:運行狀態,-表示正在運行TTY:登入的終端位置TIME:使用掉的CPU時間CMD:使用的命令ps aux:觀察系統中所有啟動並執行程式USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMANDminix007    8828  0.0  0.2  48080  8568 pts/1    Tl   21:29   0:00 vim t.croot        8988  0.6  0.0      0     0 ?        S    21:40   0:03 [kworker/1:2]root        9045  0.2  0.0      0     0 ?        S    21:45   0:00 [kworker/1:1]minix007    9100  0.0  0.0   4948  1176 pts/1    R+   21:49   0:00 ps auxVSZ:該程式佔用的虛擬記憶體量RSS:該程式佔用的固定記憶體量top:動態觀察程式變化Tasks: 193 total,   2 running, 189 sleeping,   1 stopped,   1 zombieCpu(s):  0.5%us,  1.8%sy,  0.0%ni, 97.6%id,  0.1%wa,  0.0%hi,  0.0%si,  0.0%stMem:   3962820k total,  3283620k used,   679200k free,   400800k buffersSwap:  3905532k total,        0k used,  3905532k free,  1915036k cached   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND               9156 root      20   0     0    0    0 R    4  0.0   0:00.21 kworker/0:1           1900 minix007  20   0  247m  71m  32m S    3  1.8  15:53.01 compiz                1089 root      20   0  126m  65m 8904 S    1  1.7   7:30.94 Xorg                    18 root      20   0     0    0    0 S    1  0.0   0:44.87 kworker/3:0           1969 minix007  20   0  113m  20m  10m S    0  0.5   1:06.10 unity-panel-ser       6651 minix007  20   0  268m  26m 8880 S    0  0.7   0:53.59 chrome               操作:按P按CPU使用率排序,按M按記憶體使用量率排序,按r修改NI值,按h協助,按q退出。pstree:顯示程式樹,可以看到程式之間的關係。程式管理基本原理:可以通過發送給程式一個訊號,告訴程式你想讓它做什麼。這些訊號包括SIGNUP(重新啟動), SIGINT(相當於ctrl+c)等等,可用man 7 signal查詢詳細資料。基本方式kill -signal PIDkillall processNamekillall emacs程式執行的優先順序priority(PRI):PRI越低表示越優先,由核心動態調整,使用者無法改變nicePRI(new) = PRI(old) + nice,所以可以通過nice值調整PRI,但並不是修改後就能生效,系統還要去分析判斷。  www.2cto.com  nice值設定方式方式一:啟動程式時,用 nice -n command 設定,n為nice值,範圍-20~19方式二:程式已經啟動,用 renice [number] PID 設定系統資源觀察free: 觀察記憶體$ free             total       used       free     shared    buffers     cachedMem:       3962820    2067520    1895300          0     379912     925868-/+ buffers/cache:     761740    3201080Swap:      3905532          0    3905532uname: 查看系統和核心資訊(eg: uname -a)$ uname -aLinux minix007-ubuntu-desktop 3.2.0-37-generic-pae #58-Ubuntu SMP Thu Jan 24 15:51:02 UTC 2013 i686 i686 i386 GNU/Linuxuptime: 觀察系統啟動時間和工作負載$ uptime 15:14:15 up  4:31,  2 users,  load average: 0.23, 0.24, 0.23netstat: 查看網路狀態$ netstat -t #列出tcp網路封包資料Active Internet connections (w/o servers)Proto Recv-Q Send-Q Local Address             Foreign Address         State      tcp        1      0 minix007-ubuntu-des:44769 mistletoe.canonica:http CLOSE_WAIT tcp        0      0 minix007-ubuntu-des:37063 112.90.137.192:http     ESTABLISHEDdmesg: 查看核心產生的資訊 開機時,核心會檢測硬體資訊,運行中,核心也會產生一些資訊,這些資訊被放在記憶體中一個受保護的地區,使用 dmesg可以得到這些資訊。vmstat: 偵測系統資源變化$ vmstat 1 3 #統計系統狀態,每秒1次,共3次procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa 1  0      0 1889048 380780 929772    0    0    17    14  160  286  2  2 96  1 2  0      0 1889172 380780 929772    0    0     0     0  435  788  1  1 99  0 2  0      0 1889164 380780 929772    0    0     0     0  428  767  1  1 99  04 特殊檔案與程式這一節討論的是SUID/SGID/SBIT與程式許可權的關係passwd:為什麼普通使用者執行passwd時擁有了root許可權?這是因為執行passwd時,會取得一個新的程式與PID,該PID 產生時通過SUID賦予這個程式相應許可權。  www.2cto.com  /proc:記憶體中啟動並執行程式都以檔案或目錄的形式存在於/proc目錄下。fuser:找出使用指定檔案,檔案系統,或目錄的程式。例如使用umount時發現[device is busy],就可以使用fuser找出哪個程式在使用 檔案系統。lsof:找出程式使用的檔案pidof:找出正在執行的程式的PID$ pidof emacs70215 SELinux初探SELinux是什麼:Security Enhanced Linux,安全強化的Linux。SELinux是在進行程式,檔案等細部許可權設定 依據的一個核心模組。 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.