進程和計劃任務

進程管理知識點總結:
一,什麼是進程
1,進程與程序
(1)程序 (program):一般爲 binary program ,放置在儲存媒體中 (如硬盤、光盤、軟盤、磁帶等), 爲實體文
件的型態存在;
(2)進程 (process):程序被觸發後,執行者的權限與屬性、程序的程序代碼與所需數據等都會被加載內存中, 操
做系統並給予這個內存內的單元一個標識符 (PID),能夠說,進程就是一個正在運做中的程序。
(3)父進程和子進程:ps -l
父進程:pid
子進程:ppid
注:平常運維中,kill殺死一個進程,過一會還會自動生成,通常是有crontab計劃任務或者父進程自動生成;所
以要刪除父進程
(4)fork and exec:進程呼叫的流程
在 Linux 的進程呼叫一般稱爲 fork-and-exec 的流程!進程都會由父進程以複製 (fork) 的方式產生一個
如出一轍的子進程, 而後被複製出來的子進程再以 exec 的方式來執行實際要進行的程序,最終就
成爲一個子進程的存在;
(5)系統或網絡服務:常駐在內存的進程php

2,Linux 的多人多任務環境
(1)多人環境:每一個人登入後取得的 shell 的 PID 不一樣
(2)多任務行爲:每一個工做都僅佔去 CPU 的幾個指令次數,因此 CPU 每秒可以在各個進程之間進行切換
(3)多重登入環境的七個基本終端窗口:在 Linux 當中,默認提供了六個文字界面登入窗口,以及一個圖形界面,可使用 [Alt]+[F1].....[F7]來切換不一樣的終端機界面
(4)特殊的進程管理行爲:linux每一個進程之間多是獨立的,也可能有相依性, 只要到獨立的進程當中,能夠切換到其餘的終端機界面刪除有問題的那個進程
(5)bash 環境下的工做管理 (job control):cp file1 file2 & 放後臺執行,能夠繼續執行其它指令
(6)多人多任務的系統資源分配問題考慮:node

二,工做管理 (job control)
1,什麼是工做管理?
(1)工做管理就是當登入系統取得 bash shell 後,在單一終端機接口下同時進行多個工做行爲管理
(2)要進行 bash 的 job control 必需要注意到的限制是:
1,這些工做所觸發的進程必須來自於你 shell 的子進程(只管理本身的 bash);
2, 前景:你能夠控制與下達指令的這個環境稱爲前景的工做 (foreground);
3, 背景:能夠自行運做的工做,你沒法使用 [ctrl]+c 終止他,可以使用 bg/fg 呼叫該工做;
4, 背景中『執行』的進程不能等待 terminal/shell 的輸入(input)mysql

2,job control 的管理
(1)直接將指令丟到背景中『執行』的 &linux

tar zcf /tmp/etc.tar.gz /etc &

[1] 8932nginx

tar: Removing leading `/' from member names

註解:
在中括號內的號碼爲工做號碼 (job number),該號碼與 bash 的控制有關。
8932 是這個工做在系統中的 PID。至於後續出現的數據是 tar 執行的數據流, 因爲咱們沒有加上數據流重導向,因此會影響畫面!
[1]+ Done tar zcf /tmp/etc.tar.gz /etc
表明 [1] 這個工做已經完成 (Done) ,該工做的指令則是接在後面那一串指令列
正確的完美寫法爲:tar - zpcvf /tmp/etc.tar.gz /etc > /tmp/log.txt 2>&1 &
(2)將『目前』的工做丟到背景中『暫停』:[ctrl]-zsql

vim a

[3]+ Stopped vim a
註解:
[3] ,表示這是第三個工做shell

  • 表明最近一個被丟進背景的工做
    Stopped 則表明目前這個工做的狀態
    (3)觀察目前的背景工做狀態: jobs

    jobs [-lrs]

    選項與參數:
    -l :除了列出 job number 與指令串以外,同時列出 PID 的號碼;
    -r :僅列出正在背景 run 的工做;
    -s :僅列出正在背景當中暫停 (stop) 的工做。
    經常使用選項:
    jobs -l
    jobs -r
    jobs -s
    (4)將背景工做拿到前景來處理:fg foregroundvim

    fg %jobnumber

    選項與參數:
    %jobnumber :jobnumber 爲工做號碼(數字)
    (5)讓工做在背景下的狀態變成運做中: bg (工做未結束脫機後,工做不會繼續進行)安全

    bg %jobnumber

    選項與參數:
    %jobnumber :jobnumber 爲工做號碼(數字)
    (6)管理背景當中的工做: killbash

    kill -signal %jobnumber

    kill -l

    選項與參數:
    -l :這個是 L 的小寫,列出目前 kill 可以使用的信號 (signal) 有哪些?
    signal :信號用 man 7 signal 可知:
    -1 :從新讀取一次參數的配置文件 (相似 reload);
    -2 :表明與由鍵盤輸入 [ctrl]-c 一樣的動做;
    -9 :馬上強制刪除一個工做;
    -15:以正常的進程方式終止一項工做。與 -9 是不同的。

3,脫機管理
nohup [ 指令與 參數 ] 在終端機前景中工做
nohup [ 指令與 參數 ] & 在終端機背景中工做
nohup 並不支持 bash 內建的指令,必需要是外部指令才行
例如:

vim sleep500.sh

#!/bin/bash
/bin/sleep 500s
/bin/echo "I have slept 500 seconds."

chmod a+x sleep500.sh

nohup ./sleep500.sh &

[2] 14812

nohup: ignoring input and appending output to `nohup.out' <==會告知這個訊息!

exit

若是你再次登入的話,再使用 pstree 去查閱你的進程,會發現 sleep500.sh 還在執行中

三,進程管理
1,進程的觀察
(1)查看進程 ps
經常使用組合:
ps auxf
ps -lA
ps axjf
ps aux | egrep '(cron|rsyslog)'
(2)top :動態查看進程的變化
echo $$
14836 <==這個數字是咱們 bash 的 PID
(3)pstree
經常使用組合:
pstree -A
pstree -Aup
2,進程的管理
(1)查看進程信號

kill -l

(2)經常使用信號詳解:
1 HUP 啓動被終止的進程,可以讓該 PID 從新讀取本身的配置文件,相似從新啓動
2 INT 至關於用鍵盤輸入 [ctrl]-c 來中斷一個進程的進行
9 KILL 表明強制中斷一個進程的進行,若是該進程進行到一半, 那麼還沒有完成的部分可能會有『半產品』產
生,類 似 vim 會有 .filename.swp 保留下來。
15 TERM 以正常的結束進程來終止該進程。因爲是正常的終止, 因此後續的動做會將他完成。不過,若是該進
程已經發生問題,就是沒法使用正常的方法終止時, 輸入這個 signal 也是沒有用的。
19 STOP 至關於用鍵盤輸入 [ctrl]-z 來暫停一個進程的進行
(3)kill -signal PID
kill -HUP $(ps aux | grep 'rsyslogd' | grep -v 'grep'| awk '{print $2}')
(4)killall -signal 指令名稱
killall [-iIe] [command name]
選項與參數:
-i :interactive 的意思,交互式的,若須要刪除時,會出現提示字符給用戶;
-e :exact 的意思,表示『後面接的 command name 要一致』,但整個完整的指令不能超過 15 個字符。
-I :指令名稱(可能含參數)忽略大小寫。

3,關於進程的執行順序
(1)Priority 與 Nice 值
PRI(new) = PRI(old) + nice
PRI 值越低越優先。PRI 值是由核心動態調整的, 用戶沒法直接調整 PRI值的;
當 nice 值爲負值時,那麼該進程就會下降 PRI 值,即會變的較優先被處理。
nice 值可調整的範圍爲 -20 ~ 19 ;
root 可隨意調整本身或他人進程的 Nice 值,且範圍爲 -20 ~ 19 ;
通常使用者僅可調整本身進程的 Nice 值,且範圍僅爲 0 ~ 19 (避免通常用戶搶佔系統資源);
通常使用者僅可將 nice 值越調越高,例如原本 nice 爲 5 ,則將來僅能調整到大於 5;
調整nice的方法:
一開始執行程序就當即給予一個特定的 nice 值:用 nice 指令;
調整某個已經存在的 PID 的 nice 值:用 renice 指令
(2)nice :新執行的指令即給予新的 nice 值
nice [-n 數字] command
選項與參數:
-n :後面接一個數值,數值的範圍 -20 ~ 19。
例如: nice -n -5 vim &
(3)renice :已存在進程的 nice
renice [number] PID
選項與參數:
PID :某個進程的 ID
例如:renice -5 14836

4,系統資源的觀察
(1)free :觀察內存使用狀況
free [ [-b|-k|-m|-g|-h] [-t] [-s N -c N]
選項與參數:
-b  以Byte爲單位顯示內存使用狀況。
-k  以KB爲單位顯示內存使用狀況。
-m  以MB爲單位顯示內存使用狀況。
-g 以GB爲單位顯示內存使用狀況。
-o  不顯示緩衝區調節列。
-s<間隔秒數>  持續觀察內存使用情況。
-c 統計次數
-t  顯示內存總和列。
-V  顯示版本信息。
經常使用選項:
free -m -s 5 -c 5
free -g -s 5 -c 5
(2)uname :查閱系統與核心相關信息
uname [- - asrmpi]
選項與參數:
-a :全部系統相關的信息,包括底下的數據都會被列出來;
-s :系統核心名稱
-r :核心的版本
-m :本系統的硬件名稱,例如 i686 或 x86_64 等;
-p :CPU 的類型,與 -m 相似,只是顯示的是 CPU 的類型!
-i :硬件的平臺 (ix86)
(3)uptime :觀察系統啓動時間與工做負載 /proc/loadavg
(4)netstat :查看網絡鏈接,路由表,接口統計,化裝鏈接,和組播會員
netstat -[atunlp]
選項與參數:
-a :將目前系統上全部的鏈接、監聽、Socket 數據都列出來
-t :列出 tcp 網絡封包的數據
-u :列出 udp 網絡封包的數據
-n :不以進程的服務名稱,以端口號 (port number) 來顯示;
-l :列出目前正在網絡監聽 (listen) 的服務;
-p :列出該網絡服務的進程 PID
經常使用選項:
netstat -lanptu
netstat -r
(5)dmesg :分析核心產生的訊息
經常使用命令:
dmesg | more
dmesg | grep -i sda
(6)vmstat :偵測系統資源變化

四,特殊文件與進程
(1)具備 SUID/SGID 權限的指令執行狀態
SUID 的程序被通常用戶執行過程:
SUID 權限僅對二進制程序(binary program)有效;
執行者對於該程序須要具備 x 的可執行權限;
本權限僅在執行該程序的過程當中有效 (run-time);
執行者將具備該程序擁有者 (owner) 的權限。
例子:
[wpf@47-95-251-172 ~]$ passwd
Changing password for user wpf.
Changing password for wpf.
(current) UNIX password:

[1]+ Stopped passwd
[wpf@47-95-251-172 ~]$ pstree -uA
init-+-aliyun-service
|-crond
|-2[dhclient]
|-irqbalance
|-6
[mingetty]
|-mysqld_safe---mysqld(mysql)---9[{mysqld}]
|-nginx---8
[nginx(www)]
|-php-fpm---28[php-fpm(www)]
|-rsyslogd---3
[{rsyslogd}]
|-sshd-+-sshd---bash
| -sshd---sshd(wpf)---bash-+-passwd(root)<br/>|-pstree
passwd執行時具備SUID權限給PID的程序權限
查詢系統中具備SUID/SGID的權限:
find / -perm /6000

(2)/proc/表明的意義
進程都是在內存當中,內存中的數據是寫入/proc目錄
各個進程的PID都是以目錄的型態存在/proc中
proc目錄下文件與對應的內容:
/proc/cmdline 加載 kernel 時所下達的相關指令與參數!查閱此文件,可瞭解指令是如何啓動的!
/proc/cpuinfo 本機的 CPU 的相關信息,包含頻率、類型與運算功能等
/proc/devices 這個文件記錄了系統各個主要裝置的主要裝置代號,與 mknod 有關!
/proc/filesystems 目前系統已經加載的文件系統!
/proc/interrupts 目前系統上面的 IRQ 分配狀態。
/proc/ioports 目前系統上面各個裝置所配置的 I/O 地址。
/proc/kcore 這個就是內存的大小,不要讀他!
/proc/loadavg 還記得 top 以及 uptime 吧?沒錯!上頭的三個平均數值就是記錄在此!
/proc/meminfo 使用 free 列出的內存信息,在這裏也可以查閱到!
/proc/modules 目前咱們的 Linux 已經加載的模塊列表,也能夠想成是驅動程序!
/proc/mounts 系統已經掛載的數據,就是用 mount 這個指令呼叫出來的數據!
/proc/swaps 到底系統掛加載的內存在哪裏?使用掉的 partition 就記錄在此!
/proc/partitions 使用 fdisk -l 會出現目前全部的 partition 吧?在這個文件當中也有紀錄!
/proc/uptime 就是用 uptime 的時候,會出現的信息!
/proc/version 核心的版本,就是用 uname -a 顯示的內容!
/proc/bus/
一些總線的裝置,還有 USB 的裝置也記錄在此!

(3)查詢已開啓 文件 或已執行進程開啓之 文件
fuser :從文件( 或文件系統) 找出正在使用該文件的進程
fuser [-umv] [-k [i] [-signal]] file/dir
選項與參數:
-u :除了進程的 PID 以外,同時列出該進程的擁有者;
-m :後面接的那個檔名會主動的上提到該文件系統的最頂層,對 umount 不成功頗有效!
-v :能夠列出每一個文件與進程還有指令的完整相關性!
-k :找出使用該文件/目錄的 PID ,並試圖以 SIGKILL 這個訊號給予該 PID;
-i :必須與 -k 配合,在刪除 PID 以前會先詢問使用者意願!
-signal:例如 -1 -15 等等,若不加的話,預設是 SIGKILL (-9) !

fuser -uv 888.tbzkzx.cc.access.log

USER        PID ACCESS COMMAND

888.tbzkzx.cc.access.log:
root 11259 F.... (root)nginx
www 11260 F.... (www)nginx
ACCESS詳解:
c :此進程在當前的目錄下(非次目錄);
e :可被觸發爲執行狀態;
f :是一個被開啓的文件;
r :表明頂層目錄 (root directory);
F :該文件被開啓了,不過在等待迴應中;
m :可能爲分享的動態函式庫;
經常使用選項:
fuser -uv /proc
fuser -umv log
fuser -mki /home

(4)lsof :列出被進程所開啓的文件名

lsof [-aUu] [+d]

選項與參數:
-a :多項數據須要『同時成立』才顯示出結果時!
-U :僅列出 Unix like 系統的 socket 文件類型;
-u :後面接 username,列出該使用者相關進程所開啓的文件;
+d :後面接目錄,亦即找出某個目錄底下已經被開啓的文件!
經常使用選項:
lsof filename
lsof -i :80
lsof -u root -a -U

(5)pidof :找出某支正在執行的程序的 PID
pidof [-sx] program_name
選項與參數:
-s :僅列出一個 PID 而不列出全部的 PID
-x :同時列出該 program name 可能的 PPID 那個進程的 PID

五,SELinux初探
1,什麼是SELinux Security Enhanced Linux 安全強化linux
(1)當初設計的目標:避免資源的誤用
SELinux 是在進行進程、文件等細部權限設定依據的一個核心模塊
SELinux可以控制網絡服務可否存取系統資源(由於啓動網絡服務的也是進程)
(2)傳統的文件權限與帳號關係:自主式訪問控制, DAC
自主式訪問控制 (Discretionary Access Control, DAC)就是依據進程的擁有者與文件資源的 rwx 權限來決定有無存取的能力;存在root 具備最高的權限和root 具備最高的權限問題:
(3)以策略規則訂定特定進程讀取特定 文件 :委任式訪問控制, MAC Mandatory Access Control
MAC對特定的進程與特定的文件資源來進行權限的控管

上圖例子:
WWW 服務器軟件的達成進程爲 httpd 這支程序, 而默認狀況下, httpd 僅能在 /var/www/ 這個目錄底下存取文件,若是 httpd 這個進程想要到其餘目錄去存取數據時, 除了規則設定要開放外,目標目錄也得要設定成 httpd 可讀取的模式 (type) 才行;

2,SELinux 的運做模式
主體(Subject):SELinux主要想要管理的就是進程;
目標(Objext):主體進程可否存取的目標資源,通常就是文件系統;
策略(Policy):詳細的規則來指定不一樣的服務開放某些資源的存取
targeted:針對網絡服務限制較多,針對本機限制較少,是預設的政策;
minimum:由 target 修訂而來,僅針對選擇的進程來保護!
mls:完整的 SELinux 限制,限制方面較爲嚴格
安全性本文 (security context) :

上圖的重點在『主體』如何取得『目標』的資源訪問權限
(1)主體進程必需要經過 SELinux 政策內的規則放行後,就能夠與目標資源進行安全性本文的比對,
(2)若比對失敗則沒法存取目標,若比對成功則能夠開始存取目標
(1)安全性文本 (security context)
安全性本文是放置到文件的 inode 內的,所以主體進程想要讀取目標文件資源時,一樣須要讀取 inode , 這 inode 內就能夠比對安全性本文以及 rwx等權限值是否正確,而給予適當的讀取權限依據;
查看安全性本文:

ls -Z

-rw-------. root root system_u:object_r:admin_home_t:s0 anaconda-ks.cfg
安全性本文主要用冒號分爲三個字段:
Identify:role:type
身份識別:角色:類型
詳細說明:
身份識別 (Identify) :
a)unconfined_u:不受限的用戶(在不受 SELinux 所限制的 bash 進程所產生的文件, 其身份識別大多就是 unconfined_u 『不受限』用戶)
b)system_u:系統用戶,大部分就是系統本身產生的文件
角色 (Role) :
a)object_r:表明的是文件或目錄等文件資源;
b)system_r:表明的是進程啦!不過,通常使用者也會被指定成爲 system_r !
類型 (Type) ( 最重要!) :
一個主體進程能不能讀取到這個文件資源,與類型字段有關;
類型字段在文件與進程的定義不太相同:
a)type:在文件資源 (Object) 上面稱爲類型 (Type);
b)domain:在主體進程 (Subject) 則稱爲領域 (domain) !

(2)進程與 文件 SELinux type字段的相關性
系統中的進程在SELinux底下的安全本文:

ps -eZ

LABEL PID TTY TIME CMD
system_u:system_r:init_t:s0 1 ? 00:00:03 systemd
身份識別 角色 該對應在 targeted 的意義
unconfined_u unconfined_r 通常可登入使用者的進程
system_u system_r 系統帳號的非交談式的系統運做進程
在預設的 target策略下,最重要的字段是類型字段 (type), 主體與目標之間是否具備能夠讀寫的權限,與進程的 domain 及文件的 type 有關
crond例子:

ps -eZ | grep cron

system_u:system_r:crond_t:s0-s0:c0.c1023 1338 ? 00:00:01 crond
system_u:system_r:crond_t:s0-s0:c0.c1023 1340 ? 00:00:00 atd

ll -Zd /usr/sbin/crond /etc/crontab /etc/cron.d

drwxr-xr-x. root root system_u:object_r:system_cron_spool_t:s0 /etc/cron.d
-rw-r--r--. root root system_u:object_r:system_cron_spool_t:s0 /etc/crontab
-rwxr-xr-x. root root system_u:object_r:crond_exec_t:s0 /usr/sbin/crond

  1. 首先,咱們觸發一個可執行的目標文件,那就是具備 crond_exec_t 這個類型的 /usr/sbin/crond 文件;
  2. 該文件的類型會讓這個文件所形成的主體進程 (Subject) 具備 crond 這個領域 (domain), 咱們的策略針對
    這個領域已經制定了許多規則,其中包括這個領域能夠讀取的目標資源類型;
  3. 因爲 crond domain 被設定爲能夠讀取 system_cron_spool_t 這個類型的目標文件 (Object), 所以你的配置
    文件放到 /etc/cron.d/ 目錄下,就可以被 crond 那支進程所讀取了;
  4. 但最終能不能讀到正確的資料,還得要看 rwx 是否符合 Linux 權限的規範!

3,SELinux 三種模式的啓動、關閉與觀察
(1)SELinux的三種模式:
enforcing:強制模式,表明 SELinux 運做中,且已經正確的開始限制 domain/type 了;
permissive:寬容模式:表明 SELinux 運做中,不過僅會有警告訊息並不會實際限制 domain/type 的存取。這種模式能夠運來做爲 SELinux 的 debug 之用;
disabled:關閉,SELinux 並無實際運做。
SELinux的三種模式與上面談到的政策規則、安全本文的關係:

查看SELinux模式:getenforce

getenforce

Enforcing
查看SELiunx的策略:

sestatus [-vb]

選項與參數:
-v :檢查列於 /etc/sestatus.conf 內的文件與進程的安全性本文內容;
-b :將目前政策的規則布爾值列出,亦即某些規則 (rule) 是否要啓動 (0/1) 之意;
配置文件: /etc/selinux/config

(2)SELinux 的啓動與關閉
SELinux 模式在 enforcing 與permissive 之間切換的方法爲

setenforce [0|1]

選項與參數:
0 :轉成 permissive 寬容模式;
1 :轉成 Enforcing 強制模式
注意:
在某些特殊的狀況下,從 Disabled 切換成 Enforcing 後,居然有一堆服務沒法啓動,提示在 /lib/xxx 裏面的數據沒有權限讀取,因此啓動失敗。這大可能是因爲在從新寫入 SELinux type(Relabel) 出錯之故,使用 Permissive 就沒有這個錯誤。那如何處理呢?最簡單的方法就是在 Permissive 的狀態下,使用『 restorecon -Rv / 』從新還原全部 SELinux 的類型,就可以處理這個錯誤!

4,SELinux 策略規則管理
(1)SELinux 各個規則的布爾值查詢 getsebool

getsebool [-a] [ 規則 的名 稱] ]

選項與參數:
-a :列出目前系統上面的全部 SELinux 規則的布爾值爲開啓或關閉值

(2)SELinux 各個規則規範的主體進程可以讀取的 文件 SELinux type 查詢 seinfo, sesearch
yum ×××tall -y setools-console-*

seinfo [-Atrub]

選項與參數:
-A :列出 SELinux 的狀態、規則布爾值、身份識別、角色、類別等全部信息
-u :列出 SELinux 的全部身份識別 (user) 種類
-r :列出 SELinux 的全部角色 (role) 種類
-t :列出 SELinux 的全部類別 (type) 種類
-b :列出全部規則的種類 (布爾值)

sesearch [-A] [-s 主體類別 ] [-t 目標類別 ] [-b 布 爾 值] ]

選項與參數:
-A :列出後面數據中,容許『讀取或放行』的相關數據
-t :後面還要接類別,例如 -t httpd_t
-b :後面還要接 SELinux 的規則,例如 -b httpd_enable_ftp_server
範例一:找出 crond_t 這個主體進程可以讀取的文件 SELinux type
sesearch -A -s crond_t | grep spool
範例二:找出 crond_t 是否可以讀取 /etc/cron.d/checktime 這個咱們自定義的配置文件?
ll -Z /etc/cron.d/checktime
sesearch -A -s crond_t | grep admin_home_t

(3)修改 SELinux 規則的布爾值 setsebool

setsebool [-P] 『 規則 名 稱 』 [0|1]

選項與參數:
-P :直接將設定值寫入配置文件,該設定數據將來會生效的!

5,SELinux安全本文的修改
(1)使用 chcon 手動修改 文件的 的 SELinux type
chcon [-R] [-t type] [-u user] [-r role] 文件
chcon [-R] -- reference= 範例文件 文件
選項與參數:
-R :連同該目錄下的次目錄也同時修改;
-t :後面接安全性本文的類型字段!例如 httpd_sys_content_t ;
-u :後面接身份識別,例如 system_u; (不重要)
-r :後面街角色,例如 system_r; (不重要)
-v :如有變化成功,請將變更的結果列出來
--reference=範例文件:拿某個文件當範例來修改後續接的文件的類型!
例子:
chcon -v -t net_conf_t /etc/cron.d/checktime
chcon -v -reference=/etc/shadow /etc/cron.d/checktime

(2)使用 restorecon 讓 讓 文件 恢復正確的 SELinux type

restorecon [-Rv] 文件或目錄

選項與參數:
-R :連同次目錄一塊兒修改;
-v :將過程顯示到屏幕上
例子:
restorecon -Rv /etc/cron.d

(3)semanage 默認目錄的安全性本文查詢與修改
semanage {login|user|port|interface|fconte xt|translation} -l
semanage fcontext - - {a|d|m} [-frst] file_spec
選項與參數:
fcontext :主要用在安全性本文方面的用途, -l 爲查詢的意思;
-a :增長
-m :修改;
-d :刪除。

重點回顧:1,程序 (program):一般爲 binary program ,放置在儲存媒體中 (如硬盤等),爲實體文件的型態存在;2,進程 (process):程序被觸發後,執行者的權限與屬性、程序的程序代碼與所需數據等都會被加載內存中, 操做系統並給予這個內存內的單元一個標識符 (PID),能夠說,進程就是一個正在運做中的程序。3,程序彼此之間是有相關性的,故有父進程與子進程之分。而 Linux 系統全部進程的父進程就是 init 這個PID 爲 1 號的進程。4,在 Linux 的進程呼叫一般稱爲 fork-and-exec 的流程!進程都會藉由父進程以複製 (fork) 的方式產生一個如出一轍的子進程, 而後被複製出來的子進程再以 exec 的方式來執行實際要進行的程序,最終就成爲一個子進程的存在。5,常駐在內存當中的進程一般都是負責一些系統所提供的功能以服務用戶各項任務,所以這些常駐程序就會被咱們稱爲:服務 (daemon)。6,在工做管理 (job control) 中,能夠出現提示字符讓你操做的環境就稱爲前景 (foreground),至於其餘工做就可讓你放入背景 (background) 去暫停或運做。7,與 job control 有關的按鍵與關鍵詞有: &, [ctrl]-z, jobs, fg, bg, kill %n 等;8,進程管理的觀察指令有: ps, top, pstree 等等;9,進程之間是能夠互相控制的,傳遞的訊息 (signal) 主要透過 kill 這個指令在處理;10,進程是有優先級的,該項目爲 Priority,但 PRI 是核心動態調整的,用戶只能使用 nice 值去微調 PRI11,nice 的給予能夠有: nice, renice, top 等指令;12,vmstat 爲至關好用的系統資源使用狀況觀察指令;13,SELinux 當初的設計是爲了不使用者資源的誤用,而 SELinux 使用的是 MAC 委任式存取設定;14, SELinux 的運做中,重點在於主體進程 (Subject) 可否存取目標文件資源 (Object) ,這中間牽涉到政策(Policy) 內的規則, 以及實際的安全性本文類別 (type);15,安全性本文的通常設定爲:『Identify:role:type』其中又以 type 最重要;16,SELinux 的模式有: enforcing, permissive, disabled 三種,而啓動的政策 (Policy) 主要是 targeted17,SELinux 啓動與關閉的配置文件在: /etc/selinux/config18,SELinux 的啓動與觀察: getenforce, sestatus 等指令19,重設 SELinux 的安全性本文可以使用 restorecon 與 chcon20,在 SELinux 有啓動時,必備的服務至少要啓動 auditd 這個!21,若要管理預設的 SELinux 布爾值,可以使用 getsebool, setsebool 來管理

相關文章
相關標籤/搜索