天天看點

39、linux 程序管理

1、可執行程式代碼(Unix稱之為text section)。

    通常程序還包括其他資源,如打開的檔案、挂起的信号、核心内部的資料、處理器狀态、位址空間及一個和多個執行線程、當然還包括用來存放全局變量的資料段等,實際上,程序就是正在執行的程式代碼的活标本。

2、程序存放是以連結清單的形式存放的,單個資料結構是一個task_struct的結構。(./linux/include/linux/sched.h。)。

3、/proc/sys/kernel/pid_max存放程序的最大數。

4、程序分類

程序一般分為互動程序、批處理程序和守護程序三類。

/etc/init.d/httpd 就是httpd伺服器的守護程式,當把它的運作級别設定為3和5時,當系統啟動時,它會跟着啟動。

chkconfig  --level 35  httpd on

5、程序的屬性;

① 程序ID(PID):是唯一的數值,用來區分程序;

② 父程序和父程序的ID(PPID);

③ 啟動程序的使用者ID(UID)和所歸屬的組(GID);

④ 程序狀态:狀态分為運作R、休眠S、僵屍Z;

⑤ 程序執行的優先級;

⑥ 程序所連接配接的終端名;

⑦ 程序資源占用:比如占用資源大小(記憶體、CPU占用量);

6、通過ps、kill、pgrep等管理程序

1)ps

檢視程序

常用 ps -aux

2)pgrep 通過程式名檢視程序是否運作

3)kill

資料庫伺服器的父程序不能用這些工具殺死,因為這些工具在強行終止資料庫伺服器時,會讓資料庫産生更多的檔案碎片,當碎片達到一定程度的時候,資料庫就有崩潰的危險。比如mysql伺服器最好是按其正常的程式關閉,而不是用pkill mysqld 或killall mysqld 這樣危險的動作;當然對于占用資源過多的資料庫子程序,我們應該用kill 來殺掉。

kill [信号代碼] 程序ID

代碼常用-9,強行終止

killall 正在運作的程式名 //kill processes by name

xkill 是在桌面用的殺死圖形界面的程式。如firefox出現崩潰不能退出時,運作xkill,當xkill運作時出來和個人腦骨的圖示,移到firefox圖示上點一下。如果想終止xkill,就按右鍵取消。

7、其他指令

    每個作業都是目前bash的一個子程式,彼此間是有關聯的。

ctrl+[z]将“目前”作業放到背景“暫停”

fg将背景作業拿到前台處理

bg将前台作業拿到背景運作

&直接将指令放到背景“執行”

jobs觀察作業狀态

8、fork調用建立一個子程序,而exec會用新程式代替目前程序上下文。

    TASK_RUNNING 表示程序正在運作,或是排在運作隊列中正要運作;TASK_INTERRUPTIBLE 表示程序正在休眠、TASK_UNINTERRUPTIBLE 表示程序正在休眠但不能叫醒;TASK_STOPPED 表示程序停止等。

參考

【1】 非常不錯的個人網站

<a href="http://fendou.org/2009/08/02/linux-process-note/">http://fendou.org/2009/08/02/linux-process-note/</a>

【2】 在這裡了解了下個人資訊平台展示工具,wordpress

<a href="http://zh-cn.forums.wordpress.org/">http://zh-cn.forums.wordpress.org/</a>

【4】 Linux 程序管理剖析,對fork,exit的執行機理進行了分析

<a href="http://www.ibm.com/developerworks/cn/linux/l-linux-process-management/">http://www.ibm.com/developerworks/cn/linux/l-linux-process-management/</a>

【5】 對源代碼進行剖析

<a href="http://blog.chinaunix.net/space.php?uid=20543183&amp;do=blog&amp;cuid=527393">http://blog.chinaunix.net/space.php?uid=20543183&amp;do=blog&amp;cuid=527393</a>