14、進程和計劃任務

進程和計劃任務

如何產生一個進程:

1)執行程序或者是命令

2)計劃任務

如何終止一個進程:

1)程序或者是命令執行完畢,自動終止

2)強制終止進程

進程管理

一.程序和進程的關系

程序:可執行的代碼和數據

進程:運行中的程序代碼

父子進程:進程創建的進程為子進程

1.靜態查看進程的統計信息;

(1)ps :

a:顯示終端下所有進程信息,包括其他用戶的進程

u:顯示進程的擁有者

x:顯示當前用戶所在終端下的進程信息,和a一起用,顯示所有進程

-e:顯示系統內所有進程信息

-l:長格式顯示

-f:完整的格式顯示


# /etc/init.d/httpd start

# ps -ef | grep httpd

UID? ? PID? ? ? ? ? PPID? C? STIME? ? TTY? ? ? ? ? TIME? ? ? ? ? ? CMD

root? ? ? 5088? ? ? ? ? 1? ? ? 2? 14:35? ? ? ?? ? ? ? ? 00:00:00 /usr/sbin/httpd

apache? ? 5091? ? ? 5088? 0? ? 14:35? ? ? ?? ? ? ? 00:00:00 /usr/sbin/httpd

apache? ? 5092? ? ? 5088? 0? ? 14:35? ? ? ?? ? ? ? 00:00:00 /usr/sbin/httpd

進程的擁有者 進程號? 父進程號 cpu使用的資源百分比 開始時間? 運行進程的終端名字 進程運行的時間 命令

pts:偽終端、虛擬終端

tty1--tty6: 字符終端

ps -aux 顯示結果

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

root? ? ? ? 1? 0.0? 0.1? 19348? 1332 ?? ? ? ? Ss? Aug02? 0:02 /sbin/init

root? ? ? ? 2? 0.0? 0.0? ? ? 0? ? 0 ?? ? ? ? S? ? Aug02? 0:00 [kthreadd]

root? ? ? ? 3? 0.0? 0.0? ? ? 0? ? 0 ?? ? ? ? S? ? Aug02? 0:02 [migration/0]

擁有者? 進程號 占用cpu百分比 占用內存百分比 占用的虛擬內存的大小 駐留內存大小 終端 進程狀態 開始時間 運行時間 命令

STAT:進程狀態

R:該進程正在運行

S:休眠進程

Z:僵尸進程,實際上該進程已經終止,但是它的父進程卻無法正常終止它,造成僵尸進程的狀態

T:該進程正在跟蹤或者已經停止

(2)pstree:樹形結構查看進程信息

-a:顯示完整信息

-u:列出名字

-p:列出PID號

# pstree

init─┬─abrtd

? ? ? ? ? ? ? ? ? ? ├─acpidclear

? ? ? ? ? ? ? ? ? ? ├─atd

? ? ? ? ? ? ? ? ? ? ├─automount───4*[{automount}]

? ? ? ? ? ? ? ? ? ? ├─bonobo-activati───{bonobo-activat}

init進程是所有進程的父進程


二、動態查看進程

? ? top:實時查看系統運行狀態? h 幫助 M 按照內存使用排序? P 按照CPU排序 q 退出

top - 15:07:52 up 2 days,? 7:10,? 9 users,? load average: 0.00, 0.01, 0.00

? ? ? ? 系統時間? ? 運行時長? ? ? ? ? 當前9個用戶登錄系統? ? 系統在1分鐘、5分鐘、15分鐘的平均負載情況

Tasks: 192 total,? 1 running, 191 sleeping,? 0 stopped,? 0 zombie

? ? ? 總共192個進程? 1個正在運行 191個休眠 0個停止的 0個僵尸進程

Cpu(s):? 1.5%us,? 0.2%sy,? 0.0%ni, 98.1%id,? 0.2%wa,? 0.0%hi,? 0.0%si,? 0.0%st

? 按數字1,展開CPU

Mem:? 1016516k total,? 914012k used,? 102504k free,? 100136k buffers

Swap:? 2097144k total,? ? 7220k used,? 2089924k free,? 374972k cached

? PID USER? ? ? PR? NI? VIRT? RES? SHR S %CPU %MEM? ? TIME+? COMMAND? ? ? ?

23539 root? ? ? 20? 0? 149m? 25m 7040 S? 4.3? 2.5? 4:40.87 Xorg? ? ? ? ? ?

24019 root? ? ? 20? 0? 308m? 16m 9556 S? 2.7? 1.7? 2:54.35 gnome-terminal?

5521 root? ? ? 20? 0? 336m? 15m? 11m S? 0.7? 1.6? 0:01.83 gnome-panel? ?

1598 root? ? ? 20? 0? 165m 2588 2132 S? 0.3? 0.3? 3:43.59 vmtoolsd? ? ? ?

5636 root? ? ? 20? 0 15032 1284? 932 R? 0.3? 0.1? 0:00.11 top? ? ? ? ? ?

23679 root? ? ? 20? 0? 403m? 11m 8376 S? 0.3? 1.1? 0:12.13 metacity? ? ? ?

23706 root? ? ? 20? 0? 446m? 21m? 11m S? 0.3? 2.2? 3:20.17 vmtoolsd? ? ? ? ?

------------------------

僅動態查看某個進程的狀態

? # top -p 23539? ? //其中23539是進程號

------------------------? ?

2.top動態查看進程:

-P:順序查看

3.pgrep:查看pid

-l:顯示進程名

-U:指定用戶

-t:指定終端

1、前臺運行:

? ? 直接在終端運行命令

? ? # firefox 172.16.254.251

? ? ? 會發現該程序一直占用終端,其他命令不能夠再在這個終端運行

2、后臺運行

? ? 1)命令執行的時候,直接將其放置于后臺運行

? # firefox 172.16.254.251 &

? ? ? ? ? ? [1] 6222

? ? ? ? 后臺運行不會占用執行命令的終端,用戶仍然可以使用這個終端做操作

? ? 2)對于一個已經運行的命令,如何將其放置于后臺

? ? ? # firefox 172.16.254.251

? ? ? ? ^Z[1]? Done? ? ? ? ? ? ? ? ? ? firefox 172.16.254.251? ? //按下ctrl+z

? ? ? ? [2]+? Stopped? ? ? ? ? ? ? ? firefox 172.16.254.251

? ? ? ? ctrl+z將前臺進程放置于后臺,但是該進程在后臺是停止的狀態

? ? # jobs? ? //查看后臺進程運行狀態

? ? ? ? ? ? [2]+? Stopped? ? ? ? ? ? ? ? firefox 172.16.254.251

? ? ? # fg 2? ? //激活后臺進程

? ? ? ? ? ? [2]+ firefox 172.16.254.251 &

? ? ? ? # jobs

? ? ? ? ? ? [2]+? Running? ? ? ? ? ? ? ? firefox 172.16.254.251 &

? ? bg 任務編號? :指定任務在后臺運行

? ? fg 任務編號? ? : 將后臺運行的命令變成前臺運行

? ? ? ? ? # fg 2

? ? ? ? ? ? ? ? firefox 172.16.254.251

注意:不管你是前臺運行,還是后臺運行,只要終端一關閉,進程就停止了。

那么如何讓一個命令或者程序脫離終端?

? ? 使用nohup命令。

? # nohup firefox 172.16.254.251 &

? ? ? ? [1] 6537

? # nohup: ignoring input and appending output to `nohup.out' //按回車

IPC:Interconnect Process Communication? 進程間通信

進程間通信的三種方式:

? ? 1、信號 signal

? ? 2、消息 message

? ? 3、共享內存 shared memory


信號是類unix系統中的一種通信機制,它用來中斷運行的進程執行某些操作

常用的信號:

? ? 查看信號的列表

? ? ? # kill -l

? ? 1) SIGHUP:重置進程的配置,即不停止服務的情況下,重新讀取配置文件

? ? ? ? ? ? kill -1 PID 或者kill -HUP PID

? ? 2) SIGINT:中斷(interrupt),相當于執行了ctrl+c

? ? ? ? ? ? 一個標簽執行:

? ? ? ? ? ? ? ? # firefox 172.16.254.251

? ? ? ? ? ? 另一個標簽執行

? ? ? ? # ps -ef | grep firefox

? ? ? ? ? ? root? ? ? 6855? 6630? 4 16:16 pts/0? ? 00:00:01 /usr/lib64/firefox/firefox 172.16.254.251

? ? ? ? ? ? root? ? ? 6911? 6898? 0 16:17 pts/1? ? 00:00:00 grep firefox

? ? ? ? ? ? # kill -2 6855? //發現第一個標簽的命令被終止了

? ? 9) SIGKILL:強制殺死進程、無條件殺死

? ? ? ? ? ? # firefox 172.16.254.251

? ? ? ? ? ? ? ? Killed

? ? ? ? ? # ps -ef | grep firefox

? ? ? ? ? ? root? ? ? 6982? 6630? 7 16:22 pts/0? ? 00:00:01 /usr/lib64/firefox/firefox 172.16.254.251

? ? ? ? ? ? root? ? ? 7029? 6898? 0 16:23 pts/1? ? 00:00:00 grep firefox

? ? ? ? ? ? # kill -9 6982

? ? 15) SIGTERM:終止進程,進程不一定會死

? ? 20) SIGTSTP:相當于按下ctrl+z的時候發送的信號

? ? ? ? ? ? # ps -ef | grep firefox

? ? ? ? ? ? root? ? ? 7104? 6630 13 16:29 pts/0? ? 00:00:01 /usr/lib64/firefox/firefox 172.16.254.251

? ? ? ? ? ? root? ? ? 7146? 6898? 0 16:29 pts/1? ? 00:00:00 grep firefox

? ? ? ? ? # kill -20 7104

? ? ? ? ? # firefox 172.16.254.251

? ? ? ? ? ? [1]+? Stopped? ? ? ? ? ? ? ? firefox 172.16.254.251

pkill:按照進程的屬性結束進程

? ? 按照進程名字殺死進程

? ? # pkill gnome-panel?

? ? 按照用戶名殺死進程

? ? # su - test

? ? $ vim /etc/passwd

? ? # pkill -U test?

killall:

? ? killall 命令名字? ? //殺死全部的同名進程? ?


xkill:殺死圖形化資源

? ? 當執行了xkill之后,鼠標會變成“x”形,點到任何圖形資源,就會終止該資源的運行



謙讓值:nice

? ? 作用:指定或者調整用戶進程的nice值

? ? ? ? ? ? nice值越高,該進程搶占資源的能力越弱

? ? ? ? ? ? nice值越低,該進程搶占資源的能力越強

? ? ? 范圍:-20~19


1、相關命令

? ? nice:運行時直接設置nice值

? ? ? ? 格式:nice -n 數字 command

? ? renice:對于已經運行的,調整nice值

? ? ? ? 格式:renice 數字 PID

2、例子

# cat loop.sh

? ? ? ? #!/bin/bash

while true

do

echo hello > /dev/null

done

# cp loop.sh loop1.sh

# chmod +x loop*

? ? 1)在程序執行時,直接指定nice值

# nice -n 7 ./loop.sh &

[1] 8890

# nice -n 14 ./loop1.sh &

[2] 8896

# top

? ? ? ? ? PID USER? ? ? PR? NI? VIRT? RES? SHR S %CPU %MEM? ? TIME+? COMMAND? ? ? ?

? ? ? ? 8937 root? ? ? 27? 7? 103m 1192 1028 R 94.4? 0.1? 0:43.74 loop2.sh? ? ? ?

? ? ? ? 8890 root? ? ? 27? 7? 103m 1196 1028 R 81.4? 0.1? 2:58.99 loop.sh? ? ? ?

? ? ? ? 8896 root? ? ? 34? 14? 103m 1196 1028 R 16.9? 0.1? 2:12.98 loop1.sh? ?

? ? ? ? ? ? 從上實驗看出,nice越大,獲得的資源越少,反之則反。

? 2)使用renice調整運行中的進程的nice值

? ? ? ? # renice 19 8890

? ? ? ? ? ? 8890: old priority 7, new priority 19

? ? ? ? # top

? ? ? ? # ps -ef | grep loop

? ? ? ? ? ? root? ? ? 8890? 7656 80 09:37 pts/0? ? 00:06:26 /bin/bash ./loop.sh

? ? ? ? ? ? root? ? ? 8896? 7656 49 09:38 pts/0? ? 00:03:49 /bin/bash ./loop1.sh

? ? ? ? ? ? root? ? ? 8937? 7656 91 09:40 pts/0? ? 00:05:09 /bin/bash ./loop2.sh

? ? ? ? ? ? root? ? ? 9044? 7656? 0 09:45 pts/0? ? 00:00:00 grep loop

? ? ? ? # killall loop.sh

? ? ? ? # killall loop1.sh

? ? ? ? ? ? [1]? Terminated? ? ? ? ? ? ? nice -n 7 ./loop.sh

? ? ? ? # killall loop2.sh

? ? ? ? ? ? [2]-? Terminated? ? ? ? ? ? ? nice -n 14 ./loop1.sh

? ? ? ? ? ? [3]+? Terminated? ? ? ? ? ? ? nice -n 7 ./loop2.sh

進程的調度:

ctrl+Z:轉入后臺并且停止

jobs:查看處于后臺的任務

fg:將后臺的進程恢復前臺運行,可指定任務號

ctrl+c:中斷正在執行的命令

kill:終止PID? -9 強制終止?

pkill:根據 特定條件終止進程

-t:停止終端進程

-U:按用戶名終止進程

服務控制:

? ? 1、開機是否啟動

? ? chkconfig --list httpd 查看httpd服務開啟情況

chkconfig --level 3 httpd on(off)

2、立刻調好服務:

? ? 可是使用啟動腳本絕對路徑? /etc/rc.d/init.d/httpd start

使用service 命令? ? service iptables stop

三.計劃任務:

1.at:? 一次性計劃任務

at [HH:MM] [yy-mm-dd]

>command

>(ctrl+d)

atq:查看任務

atrm:刪除任務 后邊指定要刪除的任務號

2.crontab? 周期性計劃任務

crontab命令----crond服務

全局設定的配置文件:/etc/crontab

*任意? ,多個不連續? - 連續? ? /間隔頻率

系統默認的設置:/etc/cron.*

用戶自定義的配置文件:/var/spool/cron/user_name

使用:

編輯任務:

crontab -e [-u user_name]

查看任務:

crontab -l [-u user_name]

刪除任務:

crontab -r [-u user_name]

補充:

PRI :進程優先權,代表這個進程可被執行的優先級,其值越小,優先級就越高,越早被執行

NI :進程Nice值,代表這個進程的優先值

%nice :改變過優先級的進程的占用CPU的百分比 (呵呵,這句好難理解是吧,不急慢慢來^_^)

PRI是比較好理解的,即進程的優先級,或者通俗點說就是程序被CPU執行的先后順序,此值越小進程的優先級別越高。那NI呢?就是我們所要說的nice值了,其表示進程可被執行的優先級的修正數值。如前面所說,PRI值越小越快被執行,那么加入nice值后,將會使得PRI變為:PRI(new)=PRI(old)+nice。由此看出,PR是根據NICE排序的,規則是NICE越小PR越前(小,優先權更大),即其優先級會變高,則其越快被執行。如果NICE相同則進程uid是root的優先權更大。

在LINUX系統中,Nice值的范圍從-20到+19(不同系統的值范圍是不一樣的),正值表示低優先級,負值表示高優先級,值為零則表示不會調整該進程的優先級。具有最高優先級的程序,其nice值最低,所以在LINUX系統中,值-20使得一項任務變得非常重要;與之相反,如果任務的nice為+19,則表示它是一個高尚的、無私的任務,允許所有其他任務比自己享有寶貴的CPU時間的更大使用份額,這也就是nice的名稱的來意。

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,367評論 6 532
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,001評論 3 413
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,213評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,535評論 1 308
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,317評論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,868評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,963評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,090評論 0 285
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,599評論 1 331
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,549評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,712評論 1 367
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,233評論 5 356
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,961評論 3 346
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,353評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,607評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,321評論 3 389
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,686評論 2 370

推薦閱讀更多精彩內容