1. 程式人生 > >程序管理【Ubuntu-shell】

程序管理【Ubuntu-shell】

使用者級程序、系統級程序(守護程序) ------------------------------------------------------- 監視程序: 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