作業管理
kill
kill命令: 向進程發送控制信號,以實現對進程管理 顯示當前系統可用信號:kill -l 常用信號:man 7 signal 1) SIGHUP: 無須關閉進程而讓其重讀配置文件 2) SIGINT: 中止正在運行的進程;相當于Ctrl+c 9) SIGKILL: 殺死正在運行的進程 15) SIGTERM:終止正在運行的進程 18) SIGCONT: 相當于使用 bg PID 將其激活。 19) SIGSTOP: ctrl+z 指定信號的方法: (1) 信號的數字標識;1, 2, 9 (2) 信號完整名稱;SIGHUP (3) 信號的簡寫名稱;HUP
kill
按PID:kill [-SIGNAL] pid…
對指定進程操作發送信號
killall
按名稱:killall[-SIGNAL] comm…
對一類進程進行操作發送信號
killall -9 ping 殺死所有的ping進程
pkill
按模式:pkill[options] pattern
-SIGNAL
-u uid: effective user,生效者
-U uid: real user,真正發起運行命令者
-t terminal: 與指定終端相關的進程
-l: 顯示進程名
-a: 顯示完整格式的進程名
-P pid: 顯示父進程為此處指定的進程的進程列表
可以針對進程的屬性關閉一類程序
信號也是可以捕捉的,但是15號信號是不能捕捉的。腳本編程可以使用
kill名稱是殺死,實際上是用戶通過它像指定進程發送信號(進程間通信的一種方式)。
只是發送信號
Linux的作業控制
前臺作業:通過終端啟動,且啟動后一直占據終端;
后臺作業:可通過終端啟動,但啟動后即轉入后臺運行(釋放終端)
如何讓作業運行于后臺?
(1) 運行中的作業:Ctrl+z
(2) 尚未啟動的作業:# COMMAND &
例:
使用ping命令,ping一個地址,屏幕就會被ping命令占用,不能做任何事。
是用ctrl+z鍵可以將ping命令送到后臺執行,使用該方式送到后臺后,ping會停止運行處于stopped狀態,使用kill名 kill -18 PID(ping) 可以將ping喚醒 。但是ping的命令輸出結果還是會輸出到標準輸出上。
屏幕上會有ping的結果,但是不影響執行命令,可以輸入命令并執行,但是屏幕上輸出結果看著比較亂。
使用ctrl+c不能關閉ping了。
[root@yangyouwei ~]# jobs [1]+ Stopped ping 127.0.0.1 [root@yangyouwei ~]# kill -18 38885 當然也可以使用kill 將其關閉 也可以使用jobs查看其作業號,使用fg JOB_NUM 將其調到前臺來。在使用ctrl+c終止 相當于 kill -19 PID [root@yangyouwei ~]#ping 127.0.0.1 ##開啟一個ping進程 [root@yangyouwei ~]# pgrep ping 查詢ping的PID 38975 [root@yangyouwei ~]# kill -19 38975 ##發送19信號使其調入后臺處于停止狀態。(stopped) [3]+ Stopped ping 127.0.0.2 [root@yangyouwei ~]# 放入后臺后又可能是休眠有可能是繼續運行。ping使用&放入后臺后是可以繼續運行,但是例如vim放入后臺就是stopped(因為vim是交互式命令)
nohup
此類后臺作業雖然被送往后臺運行,但其依然與終端相關;退出終端,將關閉后臺作業。如果希望送往后臺后,剝離與終端的關系: # nohup COMMAND & nohup ping 127.0.0.1 & 送到后臺后,關閉終端,ping進程也不會關閉。init進程接管。但是使用jobs看不到了
查看所有作業:
# jobs
作業控制:
# fg [[%]JOB_NUM]:把指定的后臺作業調回前臺; front ground # bg [[%]JOB_NUM]:讓送往后臺的作業在后臺繼續運行; back ground 將后臺的進程(stopped狀態)激活,使其在后臺繼續運行。 相當于kill -18 PID [root@yangyouwei ~]# jobs [1]+ Stopped ping 127.0.0.1 [root@yangyouwei ~]# bg 1 [root@yangyouwei ~]# jobs [1]+ running ping 127.0.0.1 # kill [%JOB_NUM]:終止指定的作業;
fg、bg、kill使用時。kill要針對jobs操作,必須使用%號, 否者操作的是對應號碼的PID 進程
kill %job_NUM
并行運行
vi f4.sh ###通過腳本調用,同時執行123腳本 F1.sh& F2.sh& F3.sh&
注:如果將將三個腳本的代碼放入一個腳本中,執行順序是執行完f1段代碼再執行f2段代碼…
((f1.sh&);(f2.sh&);(f3.sh&)) ##每個命令或腳本開啟一個shell后執行。 { f1.sh& f2.sh& f3.sh& } ##在當前shell下同時運行三個命令或腳本
進程優先級
進程優先級調整: 靜態優先級:100-139 進程默認啟動時的nice值為0,優先級為12 只有根用戶才能降低nice值(提高優先性) nice命令: nice [OPTION] [COMMAND [ARG]...] 使用-n 因為優先級有正數和負數,使用-n更容易看清楚 renice命令: ##修改已經運行的進程的優先級 renice [-n] priority pid... 使用-n 因為優先級有正數和負數,使用-n更容易看清楚 查看: ps axo pid,comm,ni
注:普通用戶只能把進程的優先級調低。
原創文章,作者:yyw,如若轉載,請注明出處:http://www.www58058.com/44964