linux 系統管理相關知識點分享,linux知識點
一、進程管理
1.什麼是進程
就是正在啟動並執行程式
2.進程管理的作用
判斷系統健康狀態
查看系統中所有進程
殺死進程
3.進程的查看
ps命令ps aux #列出系統的所有進程,aux前面不能加-,否則會出現一條警告ps -le #列出系統的所有進程,linux 標準格式選項:-a:顯示一個終端的所有進程-u:顯示進程的歸屬使用者和記憶體使用量情況-x:顯示沒有終端控制的進程-e:顯示所有進程-l:長格式顯示,顯示更加詳細的資訊
USER:進程所屬使用者PID:進程ID%CPU:cpu的使用率%MEM:記憶體的使用率VSZ:虛擬記憶體使用方式RSS:真實記憶體使用量情況TTY:終端類型,tty1~tty7,本地終端,pts0~pts255遠程終端STAT:進程狀態,R運行,S睡眠,T停止,s包含子進程,+後台運行START:進程的起始時間TIME:進程消耗的CPU時間COMMAND:命令
pstree命令pstree -pu #將進程以樹狀顯示選項:-p:顯示一個進程的pid-u:顯示一個進程的使用者
top命令top命令可以顯示系統的運行狀態和系統正在啟動並執行進程,top預設會3秒重新整理一次,top的前五行是系統狀態,下面的正在啟動並執行進程。top也是一個互動程式,根據使用者輸入的不同指令可以進行不同處理。top 選項 #顯示系統狀態選項:-i<時間>:設定間隔時間; -u<使用者名稱>:指定使用者名稱; -p<進程號>:指定進程; -n<次數>:迴圈顯示的次數。互動:M:根據駐留記憶體大小進行排序;P:根據CPU使用百分比大小進行排序;T:根據時間/累計時間進行排序;q:退出程式;h:顯示協助畫面,給出一些簡短的命令總結說明;前五列欄位的說明:top - 09:44:56[當前系統時間],16 days[系統已經運行了16天],1 user[個使用者當前登入],load average: 9.59, 4.75, 1.92[系統負載,即任務隊列的平均長度]Tasks: 145 total[總進程數],2 running[正在啟動並執行進程數],143 sleeping[睡眠的進程數],0 stopped[停止的進程數],0 zombie[凍結進程數],Cpu(s): 99.8%us[使用者空間佔用CPU百分比],0.1%sy[核心空間佔用CPU百分比],0.0%ni[使用者進程空間內改變過優先順序的進程佔用CPU百分比],0.2%id[空閑CPU百分比], 0.0%wa[等待輸入輸出的CPU時間百分比],0.0%hi[],0.0%st[],Mem: 4147888k total[實體記憶體總量],2493092k used[使用的實體記憶體總量],1654796k free[空閑記憶體總量],158188k buffers[用作核心緩衝的記憶體量]Swap: 5144568k total[交換區總量],56k used[使用的交換區總量],5144512k free[空閑交換區總量],2013180k cached[緩衝的交換區總量]
4.殺死進程
kill命令用來刪除執行中的程式或工作。kill可將指定的資訊送至程式。預設的資訊為SIGTERM(15),可將指定程式終止。若仍無法終止該程式,可使用SIGKILL(9)資訊嘗試強制移除程式。程式或工作的編號可利用ps指令或job指令查看。HUP 1 終端斷線INT 2 中斷(同 Ctrl + C)QUIT 3 退出(同 Ctrl + \)TERM 15 終止KILL 9 強制終止CONT 18 繼續(與STOP相反, fg/bg命令)STOP 19 暫停(同 Ctrl + Z)
killkill [選項] [PID]選項:-a:當處理當前進程時,不限制命令名和進程號的對應關係;-l <資訊編號>:若不加<資訊編號>選項,則-l參數會列出全部的資訊名稱;-p:指定kill 命令只列印相關進程的進程號,而不發送任何訊號;-s <資訊名稱或編號>:指定要送出的資訊;-u:指定使用者。
killall有時候一個軟體或者服務會有多個進程,使用kill只能殺死一個進程,而killall能將一個軟體或者服務的所有進程全部殺死。killall [選項] [訊號] 進程名選項:-i:互動模式;-I:忽略進程名的大小寫
pkillpkill [選項] [訊號] 進程名選項:-t:終端號;根據終端號踢掉使用者:
二、工作管理(背景程式管理)工作管理就是背景程式管理,有時候進行一些複雜任務是例如:複製較大檔案,備份較大檔案等等,這樣的任務往往要運行很長時間,在運行期間這個任務就會佔用終端,這時我們只能等待這個任務完成,完成之前我們什麼也做不了。其實將這個任務放在後台這行就可以解決這個問題。
1.如何將程式放到後台運行
在命令後面加&,例如:tar -zcf etc.tar.gz /etc &
在前台執行的命令時按Ctrl + Z,放到後台暫停。
2.查看背景程式
jobs [選項] 選項:-l:顯示背景程式PID
說明:中括弧裡面的是背景程式的編號,前後台切換的時候能用到,+代表最後放到背景-代表倒數第二個放到背景。
3.前背景程式切換
fg %程式編號,將背景程式放到前台
bg %程式編號,將前景程式放到後台說明:程式編號就是中括弧裡面的數字
4.脫離終端運行
脫離終端的概念是,我們在終端裡啟動並執行程式是和終端綁定的,當我們退出終端是程式就會自動結束。有時候我們想啟動一個服務然後在退出終端也能運行,這時就需要脫離終端運行。
將系統服務的啟動不在終端裡面進行,可以寫入/etc/rc.d/rc.local
放在定時任務裡面
nohup命令:nohup command &三、查看系統資源
1.vmstat,報告關於進程、記憶體、I/O等系統整體運行狀態。
Procs(進程)
r: 運行隊列中進程數量,這個值也可以判斷是否需要增加CPU。(長期大於1)
b: 等待IO的進程數量。Memory(記憶體)
swpd: 使用虛擬記憶體大小,如果swpd的值不為0,但是SI,SO的值長期為0,這種情況不會影響系統效能。
free: 空閑實體記憶體大小。
buff: 用作緩衝的記憶體大小。
cache: 用作緩衝的記憶體大小,如果cache的值大的時候,說明cache處的檔案數多,如果頻繁訪問到的檔案都能被cache處,那麼磁碟的讀IO bi會非常小。Swap
si: 每秒從交換區寫到記憶體的大小,由磁碟調入記憶體。
so: 每秒寫入交換區的記憶體大小,由記憶體調入磁碟。注意:記憶體夠用的時候,這2個值都是0,如果這2個值長期大於0時,系統效能會受到影響,磁碟IO和CPU資源都會被消耗。有些朋友看到空閑記憶體(free)很少的或接近於0時,就認為記憶體不夠用了,不能光看這一點,還要結合si和so,如果free很少,但是si和so也很少(大多時候是0),那麼不用擔心,系統效能這時不會受到影響的。IO(現在的Linux版本塊的大小為1kb)
bi: 每秒讀取的塊數
bo: 每秒寫入的塊數注意:隨機磁碟讀寫的時候,這2個值越大(如超出1024k),能看到CPU在IO等待的值也會越大。system(系統)
in: 每秒中斷數,包括時鐘中斷。
cs: 每秒環境切換數。注意:上面2個值越大,會看到由核心消耗的CPU時間會越大。CPU(以百分比表示)
us: 使用者進程執行時間百分比(usertime)us的值比較高時,說明使用者進程消耗的CPU時間多,但是如果長期超50%的使用,那麼我們就該考慮最佳化程式演算法或者進行加速。
sy: 核心系統進程執行時間百分比(system time)sy的值高時,說明系統核心消耗的CPU資源多,這並不是良性表現,我們應該檢查原因。
wa: IO等待時間百分比wa的值高時,說明IO等待比較嚴重,這可能由於磁碟大量作隨機訪問造成,也有可能磁碟出現瓶頸(塊操作)。
id: 空閑時間百分比2.free [-b|-k|-m|-g],顯示記憶體使用量情況,選項都是以什麼單位顯示3.dmesg: 開機自查資訊,4.查看cpu:cat /proc/cpuinfo5.uptime: top命令的第一行6.查看核心資訊:uname -a7.linux發行版本: lsb_release -a四、定時任務
1.at
at命令用於在指定時間執行命令。at [選項] [時間]選項:-m:任務執行完成後向使用者發送E-mail。-c:顯示所有設定過得具體命令時間:HH:MM 如:02:33HH:MM YYYY-MM-DD 如:15:28 2018-3-295pm+3 days 三天后的下午5點17:20 tomorrow 明天17:20atq 查詢設定那些任務atrm 刪除設定的任務at -c 任務號,查看任務的具體內容
說明:/etc/at.allow和/etc/at.deny分別是at服務的白名單和黑名單,只要把使用者名稱寫到你忙就會生效,其中.allow的優先權大於.deny,像這樣的白名單和黑名單其他服務也有例如:crontab注意:在at裡面的任務的許可權是和建立任務使用者的許可權一樣,如果超出許可權是不會執行。
2.crontab
crontab命令被用來提交和系統管理使用者的需要周期性執行的任務,與windows下的計劃任務類似,當安裝完成作業系統後,預設會安裝此服務工具,並且會自動啟動crond進程,crond進程每分鐘會定期檢查是否有要執行的任務,如果有要執行的任務,則自動執行該任務。crontab [選項]選項:-e:編輯crontab,使用的是vim編輯器-l:列出所有的定時任務-r:刪除所有定時任務crontab的書寫規則:使用者所建立的crontab檔案中,每一行都代表一項任務,每行的每個欄位代表一項設定,它的格式共分為六個欄位,前五段是時間設定段,第六段是要執行的命令段,格式如下:minute hour day month week command 順序:分 時 日 月 周其中:
minute:表示分鐘,可以是從0到59之間的任何整數。
hour:表示小時,可以是從0到23之間的任何整數。
day:表示日期,可以是從1到31之間的任何整數。
month:表示月份,可以是從1到12之間的任何整數。
week:表示星期幾,可以是從0到7之間的任何整數,這裡的0或7代表星期日。
command:要執行的命令,可以是系統命令,也可以是自己編寫的指令檔。在以上各個欄位中,還可以使用以下特殊字元:
星號(*):代表所有可能的值,例如month欄位如果是星號,則表示在滿足其它欄位的制約條件後每月都執行該命令操作。
逗號(,):可以用逗號隔開的值指定一個列表範圍,例如,“1,2,5,7,8,9”
中杠(-):可以用整數之間的中杠表示一個整數範圍,例如“2-6”表示“2,3,4,5,6”
正斜線(/):可以用正斜線指定時間的間隔頻率,例如“0-23/2”表示每兩小時執行一次。同時正斜線可以和星號一起使用,例如*/10,如果用在minute欄位,表示每十分鐘執行一次。執行個體:每月1、10、22日的4:45重啟smb45 4 1,10,22 * * /etc/init.d/smb restart每隔兩天的上午8點到11點的第3和第15分鐘執行3,15 8-11 */2 * * command說明:/etc/cron.allow和/etc/cron.deny分別是cron服務的白名單和黑名單,只要把使用者名稱寫到你忙就會生效,其中.allow的優先權大於.deny注意:在crontab裡面的任務的許可權是和建立任務使用者的許可權一樣,如果超出許可權是不會執行。
3.系統定時任務
系統定時任務就是通過/etc/crontab這個設定檔設定的,它的書寫規則和crontab -e類似,只不過添加了user欄位。
在/etc/下有四個特殊的檔案夾,這四個檔案夾是存放定時任務指令碼的,只要將可執行指令碼放在cron.daily下就會每天執行一次,cron.hourly是每小時執行一次,cron.monthly是每月執行一次,cron.weekly是每周執行一次
4.anacron
上面的是個檔案夾之所以會執行是依賴於/etc/crontab和anacron.而centos6以後就完全依賴anacron進行執行。centos6以前的版本的/etc/crontab會直接設定,centos6和以後的版本就沒有這樣的設定了。
anacron的原理:在/var/spool/anacron/下有三個檔案分別是cron.daily,cron.weekly,cron.mouthly,這三個檔案分別記錄著/etc/下與這三個檔案同名的目錄下的所有指令碼的最後執行時間。anacron會每天檢查一下cron.daily,每七天檢查cron.weekly,每月檢查cron.mouthly檔案所記錄的時間對比記錄時間和檢查時間的時間差,如果大於一天、一周、一個月,就會執行相應檔案夾下的指令碼。anacron的設定檔:/etc/anacrontab
RANFD_DELAY:隨機延時START_HOURS_RANGE:執行的時間範圍最後三行有四個欄位分別代表:天數,強制延遲時間,工作名,實際命令以執行cron.daily為例:
首先檢查/var/spool/anacron/cron.daily
對比記錄時間和目前時間
如果時間超過一天,就執行/etc/cron.daily下的指令碼
只能在3~22點之間執行(可以修改設定檔)
執行會在強制延遲5分鐘+隨機延遲0~45分鐘之後執行。