1 什麼是工作管理(job control)我們知道linux是多工多終端工作的作業系統。我們可以在多個終端進行工作,也可以在乙個終端進行多個任務工作。那在乙個終端同時進行多個工作任務,就稱為工作管理。比如這種情況,在乙個終端,你想要複製檔案,同時你還想壓縮打包檔案,甚至你還想編輯檔案,這個時候就要用到工作管理。工作管理的情況,大概是這樣的。直接上圖。
首先,你要明白前台,後台的概念。前台就是當前我們登陸shell操作的終端,我們與之互動,看得見,摸得著得終端。後台就是與使用者不用互動的操作環境。我們可以將執行的命令放入後台便不用再手動管理,能夠自動完成任務。
前台執行(forebackground):將工作程序放入與使用者互動的終端執行。後台執行(running):將工作程序放入不再與使用者互動的後台執行。
後台暫停(stopped):工作程序暫停狀態。
完成(done):工作完成。
終止(terminated):工作程序被終止。
2 如何進行工作管理2.1 直接將指令放到後台執行:&[1] 6798 #第一步:打包並壓縮/etc目錄
#第二步:將標準輸出流寫入檔案
#第三步:&將工作放入後台
[root@big backup]# jobs #job 檢視工作狀態為running,即後台執行
[root@big backup]# jobs -l #job -l 還可以檢視工作程序的pid
[root@big backup]# jobs -l #再次檢視,發現工作狀態done,即結束狀態,工作完成
解析: & 放入後台命令
jobs -l 可檢視四個內容:工作號 pid 工作狀態 工作命令
[1]+ 工作號,+號表示第乙個工作
6798 程序ip(pid)
done 工作程序完成
tar... 工作命令
2.2 將在前台進行的工作放入後台暫停(stopped):(command+(ctrl+z))tar: removing leading `/' from member names
^z #ctrl+z 將前台工作程序放入暫停狀態
[root@big backup]# jobs -l #檢視工作資訊
2.3 將後台工作放入前台執行:fg
[root@big backup]# jobs -l #檢視工作資訊[root@big backup]# fg %1 #將工作放入前台執行
2.4 將後台暫停工作(stopped)放入後台執行(running):bg[root@big backup]# bg %1;jobs -l #將工作號為1的工作放入後台執行,並且檢視工作資訊[root@big backup]# jobs -l #再次檢視工作狀態:done,即完成。
2.5 kill命令管理工作很多人常常會把kill當作殺程序的命令,其實這樣理解是不對的,kill命令的作用遠遠不止如此。kill更像是一種傳送訊號的命令,通過傳送訊號,告訴程序下一步該幹什麼。我們可以通過(kill -l)來檢視kill支援的訊號。在這我僅介紹四種與工作管理相關的訊號。[root@big backup]# kill -l1) sighup 2) sigint 3) sigquit 4) sigill 5) sigtrap
6) sigabrt 7) sigbus 8) sigfpe 9) sigkill 10) sigusr1
11) sigse** 12) sigusr2 13) sigpipe 14) sigalrm 15) sigterm
16) sigstkflt 17) sigchld 18) sigcont 19) sigstop 20) sigtstp
21) sigttin 22) sigttou 23) sigurg 24) sigxcpu 25) sigxfsz
26) si**talrm 27) sigprof 28) sigwinch 29) sigio 30) sigpwr
31) sigsys 34) sigrtmin 35) sigrtmin+1 36) sigrtmin+2 37) sigrtmin+3
38) sigrtmin+4 39) sigrtmin+5 40) sigrtmin+6 41) sigrtmin+7 42) sigrtmin+8
43) sigrtmin+9 44) sigrtmin+10 45) sigrtmin+11 46) sigrtmin+12 47) sigrtmin+13
48) sigrtmin+14 49) sigrtmin+15 50) sigrtmax-14 51) sigrtmax-13 52) sigrtmax-12
53) sigrtmax-11 54) sigrtmax-10 55) sigrtmax-9 56) sigrtmax-8 57) sigrtmax-7
58) sigrtmax-6 59) sigrtmax-5 60) sigrtmax-4 61) sigrtmax-3 62) sigrtmax-2
63) sigrtmax-1 64) sigrtmax
解析:四種常用的訊號以及用法例項
9) sigkill 強制殺死正在執行的程序
15) sigterm 正常終止正在執行的程序
18) sigcon 繼續執行,相當於bg
19) sigstop 後台暫停,進入後台暫停狀態(stopped)
例項: [1] 8482
解析: 通過以上例項分析,可得知(kill -19 )可將後台執行的工作程序放入後台暫停
通過以上例項分析,可得知(kill -18 )可將後台暫停的工作程序放入後台執行
通過以上例項分析,可得知(kill -15 )可將後台執行的工作程序正常終止
2.6 離線管理工作程序:nohup前面提到的工作管理都依賴於終端。一旦終端關閉,正在執行的或者是後台暫停的工作都會終止。那有沒有辦法,使我們執行的命令脫離終端的限制,也就是當我關閉了當前的終端,原先執行的命令會仍然繼續執行。答案是:當然有,那就是給力的nohup命令。格式:nohup command &
終端pts/0[1] 8910
[1]+ 8910 running nohup ping 10.0.0.1 &>/dev/null &
logout
connection closed by foreign host.
disconnected from remote host( 7.3 10.0.0.73) at 14:23:18.
終端pts/1
[root@big ~]# ps aux | grep ping #另一終端搜尋ping工作程序
root 8910 0.0 0.1 127912 1228 ? s 14:22 0:00 ping 10.0.0.1
root 8932 0.0 0.0 112648 960 pts/1 s+ 14:23 0:00 grep --color=auto ping
[root@big ~]# kill 8910 #正常終止ping工作程序
[root@big ~]# ps aux | grep ping #檢視程序是否被終止
root 8973 0.0 0.0 112648 960 pts/1 s+ 14:25 0:00 grep --color=auto ping
解析: pts/0使用nohup command & 離線模式執行命令
在另一終端pts/1 檢視ping工作程序,發現ping工作程序正在執行,由此證明nohup執行命令可脫離終端
正常終止ping程序,驗證是否終止
實驗到此結束
3 總結好了,現在讓我們通過下圖回顧一下工作管理用到的命令。
Linux 程序管理動態程序管理 詳解
訊號種類 kill l列出所有支援的訊號 kill使用訊號控制程序kill 訊號名編號程序優先順序nice linux程序排程及多工 每個cpu在乙個時間點上只能處理乙個程序,通過時間片技術,來同時執行多個程式。pr 系統內定的優先順序值比ni大20 99 39 ni nice優先值可人為變動 20...
工作管理 程序管理 (Linux筆記)
一 工作管理 1 直接將命令丟到後台中執行 eg tar jcv f infor t.tar.bz2 infor test1 將test1壓縮 2 ctrl z 將目前的工作丟到後台中暫停 3 jobs 檢視目前後台工作狀態 jobs lsr l 除了列出job number與命令串外,還列出pid...
Linux詳解 程序管理
接下來的幾篇部落格,我將主要按照這個思維導圖的劃分去進行講解。在理解什麼是程序管理之前,我想我們可以先理解一下什麼是管理!問題 什麼是管理?管理的過程就是 先描述,再組織 所有事情都可以被分類為 決策 和 執行 管理的三個角色 資訊 資料 資訊量太大怎麼辦?結論 問題 什麼是程序?我們該如何理解程序...