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&do=blog&cuid=527393">http://blog.chinaunix.net/space.php?uid=20543183&do=blog&cuid=527393</a>