技術(shù)員聯(lián)盟提供win764位系統(tǒng)下載,win10,win7,xp,裝機(jī)純凈版,64位旗艦版,綠色軟件,免費(fèi)軟件下載基地!

當(dāng)前位置:主頁 > 教程 > 服務(wù)器類 >

linux之進(jìn)程

來源:技術(shù)員聯(lián)盟┆發(fā)布時(shí)間:2018-07-31 12:00┆點(diǎn)擊:

  在linux每執(zhí)行一個(gè)二進(jìn)制文件都會(huì)產(chǎn)生一個(gè)進(jìn)程并生成一個(gè)進(jìn)程PID。進(jìn)程除了自身的ID外,還有父進(jìn)程ID(ppid),所有進(jìn)程的祖先進(jìn)程是同一個(gè)進(jìn)程,它叫做init進(jìn)程,PID為1。

  當(dāng)用戶從一個(gè)終端登陸時(shí),便獲得一個(gè)此次執(zhí)行的bash進(jìn)程的PID。用戶執(zhí)行的每一條指令都是這個(gè)PID的子進(jìn)程。

  linux通過fork-and-exec的流程來產(chǎn)生子進(jìn)程:首先會(huì)通過父進(jìn)程以復(fù)制 (fork) 的方式產(chǎn)生一個(gè)一模一樣的子進(jìn)程, 然后被復(fù)制出來的子進(jìn)程再以 exec 的方式來運(yùn)行實(shí)際要進(jìn)行的程序,最終就成為一個(gè)子進(jìn)程的存在。

  僵尸進(jìn)程:當(dāng)該程序應(yīng)該已經(jīng)運(yùn)行完畢,或者是因故應(yīng)該要終止了,但是該程序的父程序卻無法完整的將該程序結(jié)束掉,而造成那個(gè)程序一直存在內(nèi)存當(dāng)中,形成僵尸進(jìn)程。

  進(jìn)程后臺(tái)運(yùn)行與暫停

  通過在命令結(jié)尾加上&,可以時(shí)命令在后臺(tái)運(yùn)行而不影響前臺(tái)。

  通過[ctrl]-z可以將前臺(tái)正在運(yùn)行的進(jìn)程暫停。

  jobs

  查看當(dāng)前后臺(tái)工作狀態(tài):

  選項(xiàng)與參數(shù):

  -l :除了列出 job number 與命令串之外,同時(shí)列出 PID 的號(hào)碼;

  -r :僅列出正在背景 run 的工作;

  -s :僅列出正在背景當(dāng)中暫停 (stop) 的工作。[zsp@sky]~$ vim a

  [1]+ 已停止 vim a

  [zsp@sky]~$ vim b

  [2]+ 已停止 vim b

  [zsp@sky]~$ jobs

  [1]- 已停止 vim a

  [2]+ 已停止 vim b

  那個(gè)+代表最近一個(gè)被暫停到后臺(tái)的工作,且當(dāng)執(zhí)行fg命令時(shí)在后臺(tái)下默認(rèn)會(huì)被取用的那個(gè)工作。-代表最近最后第二個(gè)被暫停到后臺(tái)中的工作號(hào)碼

  fg

  將后臺(tái)的工作拿出來處理

  %可以指定處理哪一個(gè)后臺(tái)任務(wù)

  [zsp@sky]~$ fg

  vim b

  [2]+ 已停止 vim b

  [zsp@sky]~$ jobs

  [1]- 已停止 vim a

  [2]+ 已停止 vim b

  [zsp@sky]~$ fg %1

  vim a

  [1]+ 已停止 vim a

  [zsp@sky]~$ jobs

  [1]+ 已停止 vim a

  [2]- 已停止 vim b

  bg

  讓一個(gè)被暫停的任務(wù)在后臺(tái)繼續(xù)運(yùn)行

  kill

  停止或重啟后臺(tái)任務(wù)

  -l :這個(gè)是 L 的小寫,列出目前 kill 能夠使用的訊號(hào) (signal) 有哪些?

  -1 :重新讀取一次參數(shù)的配置文件,啟動(dòng)被終止的進(jìn)程;

  -2 :代表與由鍵盤輸入 [ctrl]-c 同樣的動(dòng)作;

  -9 :立刻強(qiáng)制刪除一個(gè)工作;

  -15:以正常的程序方式終止一項(xiàng)工作。與 -9 是不一樣的。

  nohup

  脫機(jī)執(zhí)行后臺(tái)進(jìn)程

  當(dāng)后臺(tái)任務(wù)正在執(zhí)行時(shí),若注銷登錄,那么任務(wù)也將停止??梢允褂胣ohup來使任務(wù)在注銷后繼續(xù)執(zhí)行。

  nohup [命令與參數(shù)] &

  ps

  將某個(gè)時(shí)間點(diǎn)的進(jìn)程運(yùn)行情況列下來

  選項(xiàng)與參數(shù):

  -A :所有的 process 均顯示出來,與 -e 具有同樣的效用;

  -a :不與 terminal 有關(guān)的所有 process ;

  -u :有效使用者 (effective user) 相關(guān)的 process ;

  x :通常與 a 這個(gè)參數(shù)一起使用,可列出較完整資訊。

  輸出格式規(guī)劃:

  l :較長(zhǎng)、較詳細(xì)的將該 PID 的的資訊列出;

  j :工作的格式 (jobs format)

  -f :做一個(gè)更為完整的輸出。

  常用:

  ps aux 列出系統(tǒng)所有的程序數(shù)據(jù)

  ps -l 僅列出自己 bash 程序[zsp@sky]~$ ps -l

  F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD

  0 S 1000 1955 1948 0 80 0 - 6086 wait pts/0 00:00:00 bash

  0 R 1000 2917 1955 0 80 0 - 2530 - pts/0 00:00:00 ps

  從左到右各個(gè)字段意思

  F:代表這個(gè)程序標(biāo)志,說明這個(gè)程序的權(quán)限,常見號(hào)碼有:

  若為 4 表示此程序的權(quán)限為 root ;

  若為 1 則表示此子程序僅進(jìn)行復(fù)制(fork)而沒有實(shí)際運(yùn)行(exec)。

  S:代表這個(gè)程序的狀態(tài) (STAT),主要的狀態(tài)有:

  R (Running):該程序正在運(yùn)行中;

  S (Sleep):該程序目前正在睡眠狀態(tài)(idle),但可以被喚醒(signal)。

  D :不可被喚醒的睡眠狀態(tài),通常這支程序可能在等待 I/O 的情況(ex>列印)

  T :停止?fàn)顟B(tài)(stop),可能是在工作控制(背景暫停)或除錯(cuò) (traced) 狀態(tài);

  Z (Zombie):僵尸狀態(tài),程序已經(jīng)終止但卻無法被移除至內(nèi)存外。

  UID/PID/PPID:代表此程序被該 UID 所擁有/程序的 PID 號(hào)碼/此程序的父程序 PID 號(hào)碼』

  C:代表 CPU 使用率,單位為百分比;

  PRI/NI:Priority/Nice 的縮寫,代表此程序被 CPU 所運(yùn)行的優(yōu)先順序,數(shù)值越小代表該程序越快被 CPU 運(yùn)行。

  ADDR/SZ/WCHAN:都與內(nèi)存有關(guān),ADDR 是 kernel function,指出該程序在內(nèi)存的哪個(gè)部分,如果是個(gè) running 的程序,一般就會(huì)顯示-/ SZ 代表此程序用掉多少內(nèi)存 / WCHAN 表示目前程序是否運(yùn)行中,同樣的, 若為 - 表示正在運(yùn)行中。

  TTY:登陸者的終端機(jī)位置,若為遠(yuǎn)程登陸則使用動(dòng)態(tài)終端介面 (pts/n);

  TIME:使用掉的 CPU 時(shí)間,注意,是此程序?qū)嶋H花費(fèi) CPU 運(yùn)行的時(shí)間,而不是系統(tǒng)時(shí)間;

  CMD:就是 command 的縮寫,造成此程序的觸發(fā)程序之命令為何。[zsp@sky]~$ ps aux | head -n 2

  USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

  root 1 0.0 0.1 24440 2416 ? Ss 16:19 0:01 /sbin/init

  root 2 0.0 0.0 0 0 ? S 16:19 0:00 [kthreadd]

  從左到右各個(gè)字段意思

  USER:該 process 屬於那個(gè)使用者帳號(hào)的?

  PID :該 process 的程序識(shí)別碼。

  %CPU:該 process 使用掉的 CPU 資源百分比;

  %MEM:該 process 所占用的實(shí)體內(nèi)存百分比;

  VSZ :該 process 使用掉的虛擬內(nèi)存量 (Kbytes)

  RSS :該 process 占用的固定的內(nèi)存量 (Kbytes)