程序管理【Ubuntu-shell】
阿新 • • 發佈:2018-12-24
使用者級程序、系統級程序(守護程序)
-------------------------------------------------------
監視程序:
PID:程序號,系統為程序分配的唯一編號,用於標識系統的身份。
PPID:父程序的PID號
TTY:啟動該程序的的終端
USER/UID:執行該程序的使用者身份及UID
PRI:程序的優先順序,數字越大表示優先順序越低
NICE:程序的謙讓度,表示程序對CPU時間要求的迫切程度
STAT:程序的狀態。如,R:正在執行或已經就緒,S:可以被喚醒的睡眠,D:不可喚醒的睡眠,T:已被停止,Z:程序已經終止但未被父程序回收。
%CPU:程序佔用的CPU比例
%MEM:程序佔用的記憶體比例
TIME:程序實際佔用CPU的總時間
ADDR:程序在記憶體中的地址
SZ:程序佔用的虛擬記憶體大小
CMD:啟動程序的命令
-----------------------------------
proc檔案系統:
一個建立在記憶體的特殊檔案系統,掛載點是"/proc",它記錄了個程序以及其他系統資訊。在proc檔案系統中,每個目錄對應於一個程序,目錄以程序的PID命名。進入某個程序對應的目錄,裡面有若干檔案,這些檔案記錄了該程序當前執行的各種狀態資訊。應用程式可通過開啟並讀取這些檔案來獲取程序資訊。proc檔案系統實質為使用者程式提供了一種瞭解Linux核心的方式。許多系統管理命令,如:ps命令,top命令等,通過讀取並整理proc檔案系統的內容後以友好方式呈現給使用者。
cd /proc
ls -l
cd ./1
#1號目錄記錄1號程序資訊,即:init程序,1號程序是系統的第一個使用者級程序。
ls -l
cat ./status
cat /proc/meminfo
cat /proc/cpuinfo
-----------------------------------------
程序監視命令:
ps命令提供當前程序的狀態快照。top命令實時提供程序資訊。pstree命令檢視程序家族樹。lsof命令列出程序所開啟的檔案。
ps 【選項】:報告程序資訊。
-l:長格式顯示程序資訊
-e:顯示所有程序資訊
-a:顯示當前終端程序外的其他程序
-u:後加使用者名稱引數,指定顯示屬於該使用者的程序
ps -el
ps
ps aux #VSZ:程序佔用虛擬記憶體大小;RSS:程序佔用實體記憶體大小
ps -u linux
top 【選項]:實時報告程序資訊
-d:後加引數,指定設定重新整理程序資訊的間隔時間。
-n:後加引數,設定總報告次數。
top -d 2 -n 3 #2秒,3次
pstree 【選項】 【程序PID號/使用者名稱】:顯示程序家族樹
-p:顯示每個程序PID號
-u:後加使用者名稱引數,指定顯示屬於該使用者的程序
ps
pstree
lsof 【選項】 【檔案或目錄路徑】:列出某程序開啟的檔案
-p:後加引數:一組程序的PID
+d:後加引數:目錄路徑
-u:後加引數:使用者名稱
--------------------------------------
程序與訊號:
kill -l #列出系統定義的所有訊號
SIGINT 程式終止訊號,通知前臺終止程序
SIGQUIT 與SIGINT類似,程序終止後生成檔案core
SIGKILL 強行終止某程序,該訊號不能被封鎖
SIGCONT 恢復執行被SIGSTOP或SIGTSTP訊號暫停的程序
SIGSTOP 通知作業系統停止程序的執行,該訊號不可忽略
SIGTSTP 暫停程序,但可以被處理和忽略
程序終止,程序被消亡。
程序停止,還能繼續被排程執行。
kill 【選項】 【-訊號名稱/編號】 [PID列表】:向程序傳送訊號
-l:列出系統中定義的訊號
kill
kill -l
-----------------------------------------------------
調整程序優先順序:
nice [選項】 【啟動的命令及其選項和引數】:設定啟動程序的謙讓度
-n:後加引數,設定謙讓度 #程序優先順序:PRI,謙讓度NI
nice -n -3 vim &
ps -l
renice 【選項】 謙讓度 程序PID號:調整程序的優先順序,普通使用者僅能設定它所擁有的程序的優先順序
-n:後加引數,謙讓度
renice -n 3 [vim的程序PID號】
ps -l
---------------------------------------
守護程序(Daemon)和系統服務:
守護程序,父程序是init程序,獨立於控制終端,不是通過bash啟動。
一個守護程序啟動或終止------>一種系統服務的啟動或終止
xinetd超級守護程序
------------------------------
守護程序,如:
atd 提供執行臨時性作業服務
crond 提供執行週期性作業服務
syslogd 提供系統日誌服務
auditd 提供系統審計服務
network 提供啟用/關閉各個網路介面服務
iptables提供防火牆服務
sshd 提供安全的遠端連線服務
vsftpd 提供網路檔案傳輸服務
smbd 提供區域網檔案共享服務
named 提供域名解析服務
httpd 提供網頁內容服務---www
xinetd 超級守護程序,提供對各項服務統一管理的服務
----------------------------------
守護程序啟動、關閉:
chkconfig 【選項】 服務名:設定守護程序在各個執行級下的啟動或關閉
--list:後加服務名,指定檢視所要設定的守護程序的設定情況
--level:後加執行級編號
chkconfig --list sshd
chkconfig --level 4 sshd off
chkconfig --list sshd
#/etc/init.d/ssh ---ssh服務的shell指令碼
#ls -l /etc/rc0.d | grep ssh* #檢視符號連結
#ls -l /etc/rc1.d | grep ssh*
#ls -l /etc/rc2.d | grep ssh*
#ls -l /etc/rc3.d | grep ssh*
#ls -l /etc/rc4.d | grep ssh*
#ls -l /etc/rc5.d | grep ssh*
#ls -l /etc/rc6.d | grep ssh*
service 服務名 【start|stop|status|restart|……】:檢視、啟動、關停等系統服務
--status-all:顯示所有獨立工作服務的當前狀態
service apache2 restart
----------------------------------------------------------
謙讓度與程序優先順序的調整:
#!/bin/bash
count=$1
while [ $count -gt 0 ]
do
count=$[ $count - 1 ]
sleep 0.001
done
echo "process $$finish."
#$$ 當前指令碼的程序PID號
#process.sh
sudo date +"%M:%S";source process.sh 1000; date +"%M:%S"
(nice -n -20 `. ./process.sh 100000` &);(nice -n 19 `. process.sh 100000` &);top -d 10
kill -SIGSTOP process.shPID號1 process.shPID號2
------------------------------------------------------------
平均負載:系統在一段時間內的負載情況。
系統的負載:系統所要承擔的計算工作量。
source process.sh 10000 &
top -d 10
(source process.sh 10000 &);(source process.sh 10000 &)
top -d 10
(source process.sh 10000 &);(source process.sh 10000 &);(source process.sh 10000 &);(source process.sh 10000 &)
top -d 10