Linux程序管理?

Tags: 命令, 程序,

程序和程式的區別:

一動一靜,對應關係-多對多

父程序與子程序

老子管兒子,殭屍和孤兒.

前臺程序和後臺程序

工具/原料

電腦

linux系統

方法/步驟

前臺程序

例:ping 127.0.0.1 >>ping.result

在Shell提示處打投入命令後,建立一個子程序,執行命令,Shell等待它的

結束,然後才能返回給使用者提示符。這條命令在前臺執行,使用者在它完成

之前不能執行另一個命令。

後臺程序

例:ping 127.0.0.1 >>ping.result & 將結果儲存到ping.result檔案

在Shell提示處打入一個命令,若後隨一個&,Shell建立子程序執行此命令,

但不等待命令退出,而是直接返回到對使用者給出提示。

後臺程序必須是非互動式的。

watch -d -n 1 ls -l

監聽某個命令執行效果,-n時間重新整理頻露1s

程序常用命令:

1、w

09:49:34 up 4 min, 2 users, load average: 0.42, 0.81, 0.38

伺服器時間 開機時長 登入使用者數 平均負載:1、5、15分鐘(一般0.8以下,說明較輕)

USER 登入使用者名稱

TTY 在哪登入 :0表示XWindow登入

FROM 來自哪裡 :0.0 表示來自於XWindow - 表示本地命令列登入

[email protected] 什麼時候登入的

IDLE 空閒時間

JCPU 該終端消耗的CPU時間

PCPU 正在執行程式消耗的時間

WHAT 正在做什麼

2、who 簡單檢視登陸者資訊

3、ps檢視程序資訊 (process status)

-a 顯示終端下的程序(不含其他使用者)

-u 顯示使用者和啟動時間

-x 表示沒有控制終端的程序

-e 顯示所有程序,包括沒有控制終端的程序

-l 長格式顯示

應用例項:

PS 顯示當前使用者自己的程序

ps -l 檢視隸屬於自己的程序詳細資訊

ps uU 使用者名稱  檢視系統中指定使用者執行的程序

ps -le 或 aux 檢視所有使用者執行的程序詳細資訊 用得很多 aux可以檢視到apache程序是哪個使用者

通常結合grep使用 如 ps -le prep httpd 檢視apache程序是否啟動

/etc/rc.d/init.d/httpd status 通過啟動指令碼,也能檢視程序是否已啟動

ps -le --sort pid 可按pid排序

ps –aux grep jack 檢視jack使用者的程序

pstree more 樹狀結構顯示程序

常見選項的含義

PID 程序號 (process id) 1為init 系統第一個程序

PPID 父程序的程序號(parent process id)

TTY 啟動的終端 tty1-7本地 1-6字元 7圖形 pts/n遠端

STAT 程序當前狀態: S休眠 D不可中斷的休眠 R執行 Z僵死 T停止

NI 程序優先順序

TIME 程序自啟動以來佔用CPU的總時間

COM/COMMAND 程序的命令名

USER 使用者名稱 (ps -uU 使用者名稱)

%CPU 佔用CPU時間和總時間的百分比

%MEM 佔用記憶體與系統記憶體的百分比

start 程序觸發時間

time 佔用cpu時間

command 程序本身

4、kill 殺死一個程序

為什麼要殺死程序?

1. 該程序佔用了過多的CPU時間

2. 該程序鎖住的一個終端,使其它前臺程序無法執行

3. 執行時間過長,但沒有預期的效果

4. 產生了過多的到螢幕或磁碟檔案輸出 例如find / -name "*"

5. 無法正常退出

關閉程序 kill 程序號(PID)

apache的httpd有很多個,我們關閉了父程序,子程序將自動關閉

或呼叫/etc/rc.d/init.d/httpd stop

kill的訊號 kill -l可以列出

kill -9 程序號 (強行關閉)

kill -1 程序號 (重啟程序)

也可以呼叫/etc/rc.d/init.d/httpd restart重啟apache程序

關閉圖形程式 xkill 滑鼠按哪兒,將關閉哪兒 點右鍵取消

結束所有同名程序 killall -9程序名稱 (如killall httpd)

5、以p開頭的命令

pgrep httpd 檢視httpd程序的所有pid

重啟apache程序:kill -1 `pgrep httpd`

pkill httpd 直接關閉httpd程序,不用查pid了

pkill -9 -t 終端號 提出登入使用者

6、優先順序命令

nice

指定程式進行的優先順序

格式nice n myprogram

例nice --5 /etc/rc.d/init.d/httpd start (預設是0,指定為-5)

ps -le grep httpd # NI程序優先順序

renice

改變一個正在進行的程序的優先順序

例renice n pid

優先順序取值範圍為(-20,19)預設是0 值越小,權越大

ps -le 中,NI就是優先順序

7、前後臺程序操作

一個符號:

把程序放到後臺執行 在後面加 &

ping 127.0.0.1 >>/test/ping.result &

另一個終端去檢視:

tail -f /test/ping.result

兩個操作:

程序的掛起和終止

掛起 ctrl+z 暫停 # ping 127.0.0.1 然後按ctrl+z 此時程序未終止,在後臺停止

終止 ctrl+c # ping 127.0.0.1 然後按ctrl+c 程序終止,釋放資源

三個命令:

檢視被掛起或在後臺執行的程序

jobs

程序的恢復

fg [序號] 恢復到前右繼續執行

bg[序號] 恢復到後臺繼續執行

若不加序號,則預設將命令作用於+修飾的程序

8、top命令

上面的資訊,類似於w顯示的資訊

第一行: 系統當前時間 系統持續時間 登入使用者 1,5,15分鐘之前的平均負載

第二行:程序總數

第三行:CPU佔用率 %id 空閒百分比

第四行:記憶體使用: 總共 使用 空閒 快取

第五行:swap使用

下面類似於ps –le資訊

內建命令d 然後輸入5,將改為每5秒重新整理一次

內建命令c 顯示整個命令列,而不僅僅顯示命令名 command

u 使用者名稱 只顯示某使用者的資訊,管理員可以檢視某個使用者在做什麼,

k 提示輸入pid 關閉程序

可以在u檢視某個使用者時,kill掉使用者的bash程序,

將使用者踢下線,提示輸入 kill的訊號,例如9強制關閉

r 調優先順序

M 記憶體排序

P CPU排序

q 退出

h or ? 幫助資訊

9、free –m 檢視記憶體狀態

10、檢視proc檔案下資訊

ls /proc

該目錄存放的是程序資訊,數字是以pid為目錄名,資訊存放在目錄中

cat /proc/cpuinfo 檢視cpu資訊

cat /proc/meminfo 記憶體資訊

cat /proc/partitions 分割槽資訊

程序分類

1、分類

standalone 獨立執行

xinetd 程序託管

atd、crond 計劃任務

standalone 獨立執行

如apache、mysql的服務,啟動後,程序會一直在系統中,

佔用CPU和記憶體資源,等待或處理客戶端的請求

佔用系統資源多,但響應速度快

xinetd 程序託管 (需要獨立安裝yum -y install xinetd)

有些服務,用得很少,沒必要獨立執行 例如telnet服務

ls /etc/xinetd.d 檢視這個目錄中有很多指令碼

服務不啟動,由xinetd監聽這個埠,有客戶端訪問,則啟動程序,等服務完成後,結束程序

響應速度慢一點,但減少了系統資源佔用

atd、crond 計劃任務

每隔一分鐘,從休眠中醒來一次,所以,計劃任務不能精確到秒。

2、管理

#chkconfig --list

執行級別:0-6

0 關機

1 單使用者模式

2 不完全多使用者,不包含NFS服務

3 完全多使用者 字元介面

4 未分配

5 圖形介面

6 重啟

init 0 關機 init 5 startx init 3

init 6 重啟

runlevel 查詢系統當前執行級別

vi /etc/inittab

id:3:initdefault: 定義系統預設執行級別

列出在每一種執行級別下服務是啟動還是關閉

chkconfig --list grep atd 檢視計劃任務服務

3、啟動服務

RPM包安裝的服務:

service 服務名 start stop restart status

例service network start

能被service命令識別是因為,在/etc/rc.d/init.d/下有服務執行指令碼

/etc/rc.d/init.d/服務名 start stop restart status

例/etc/rc.d/init.d/httpd start

設定開機自啟動

vi /etc/rc.local ---->/etc/rc.d/rc.local

例/etc/rc.d/init.d/httpd start

ntsysv (setup中會呼叫此工具)

所有系統預設安裝服務都可以使用ntsysv命令進行自啟動管理

原始碼包安裝的服務:

絕對路徑啟動

/usr/local/apache2/bin/apachectl start

開機自啟動

vi /etc/rc.local

寫入啟動命令

/usr/local/apache2/bin/apachectl start

相關問題答案