linux普通用户发送信号,Linux信号发送与作业控制
前言
Linux中進程間通信又稱為IPC(Inter process communication),大致上可以分為這么幾類:消息隊列(message queue),旗語(semerpore),共享內(nèi)存(shared memory),信號(signal),Unix域套接字,socket等。
一、信號發(fā)送
signal用來向進程傳遞微小的信息。
顯示可用信號:kill?-l
man?7?signal
1.kill命令
格式:kill?[-SIGNAL]?PID
SIGNAL:(1) 信號的完整名稱,例如SIGHUP、SIGINT、SIGKILL、SIGTERM、SIGCONT、SIGSTOP
(2) 信號簡稱:HUP、KILL
(3) 信號數(shù)據(jù)標識:1,2, ...
SIGHUP:1, 讓進程重讀配置文件中的信息,而無須重啟進程;
SIGINT:2, interrupt,打斷正在運行中進程;相當于Ctrl+c
SIGKILL: 9, 強行中止正在運行的進程
SIGTERM:15, 優(yōu)雅關(guān)閉正在運行的進程 SIGSTOP:19, 暫停進程
SIGCONT: 18,繼續(xù)暫停進程
實例:[root@young?~]#?ps?aux|grep?httpd
root??????56893??1.0??0.1?226128??5056??????????Ss???21:47???0:00?/usr/sbin/httpd?-DFOREGROUND
apache????56894??0.0??0.1?228212??3120??????????S????21:47???0:00?/usr/sbin/httpd?-DFOREGROUND
apache????56895??0.0??0.1?228212??3120??????????S????21:47???0:00?/usr/sbin/httpd?-DFOREGROUND
apache????56896??0.0??0.1?228212??3120??????????S????21:47???0:00?/usr/sbin/httpd?-DFOREGROUND
apache????56897??0.0??0.1?228212??3120??????????S????21:47???0:00?/usr/sbin/httpd?-DFOREGROUND
apache????56898??0.0??0.1?228212??3120??????????S????21:47???0:00?/usr/sbin/httpd?-DFOREGROUND
root??????56966??0.0??0.0?112644???948?pts/0????R+???21:47???0:00?grep?--color=auto?httpd
[root@young?~]#?kill?-1?56893?#讓httpd重讀其配置文件
2.killall命令
按命令名字發(fā)送信號。
格式:killall?[-SIGNAL]?COMMAND
實例:[root@young?~]#?killall?-15?httpd
[root@young?~]#?ps?aux|grep?httpd
root??????61513??0.0??0.0?112644???952?pts/0????R+???21:55???0:00?grep?--color=auto?httpd
[root@young?~]#
3.pkill命令
pkill 和killall 應用方法差不多,也是直接殺死運行中的程序;如果您想殺掉單個進程,請用kill 來殺掉。
格式:pkill?[options]?pattern
常用選項:-SIGNAL
-u?uid:?effective?user,生效者
-U?uid:?real?user,真正發(fā)起運行命令者
-t?terminal:?與指定終端相關(guān)的進程
-P?pid:?顯示父進程為此處指定的進程的進程列表
實例:[root@young?~]#?pkill?httpd
[root@CentOS?~]#?pkill?-U?apache
二、Linux作業(yè)控制
1.系統(tǒng)job作業(yè)
(1)job種類:前臺作業(yè)(foregroud):通過終端啟動,且啟動后會一直占據(jù)終端;
后臺作業(yè)(backgroud):可以通過終端啟動,但啟動后即轉(zhuǎn)入后臺運行(釋放終端);
(2)讓作業(yè)運行于后臺
1) 運行中的作業(yè):Ctrl+z
送往后臺后,作業(yè)會轉(zhuǎn)為停止態(tài);相當于發(fā)送kill -19信號
2) 尚未啟動的作業(yè):# COMMAND &
此類作業(yè)雖然被送往后臺,但其依然與終端相關(guān);如果希望把送往后臺的作業(yè)剝離與終端的關(guān)系:# nohup COMMAND &
實例:[root@CentOS?~]#?nohup?yes?&
[1]?8444
[root@CentOS?~]#?nohup:?ignoring?input?and?appending?output?to?`nohup.out'
(3)查看所有的作業(yè):#jobs命令
實例:[root@young?~]#?jobs?-l??#?-l選項顯示進程PID
[1]+?23602?Running?????????????????nohup?yes?&
+/- 表示優(yōu)先級;當調(diào)用時不加作業(yè)號會默認調(diào)用+的命令[root@young?~]#?jobs?-l
[1]??79973?Running?????????????????sleep?100?&
[2]??80066?Running?????????????????sleep?200?&
[3]-?80255?Running?????????????????sleep?300?&
[4]+?80414?Running?????????????????sleep?400?&
[root@young?~]#?fg
sleep?400
(4)可實現(xiàn)作業(yè)控制的常用命令:#fg??[[%]JOB_NUM]:把指定的作業(yè)調(diào)回前臺;
#bg??[[%]JOB_NUM]:讓送往后臺的作業(yè)在后臺繼續(xù)運行;
#kill??%JOB_NUM:終止指定的作業(yè);
實例:[root@young?~]#?sleep?100?&
[1]?72535
[root@young?~]#?fg?1
sleep?100
^Z?????#crtl+z放到后臺掛起
[1]+??Stopped?????????????????sleep?100
[root@young?~]#?jobs?-l
[1]+?72535?Stopped?????????????????sleep?100
[root@young?~]#?bg?%1
[1]+?sleep?100?&
[root@young?~]#?jobs
[1]+??Running?????????????????sleep?100?&
[root@young?~]#?kill?%1
[root@young?~]#?jobs
[1]+??Terminated??????????????sleep?100
小貼士:同時運行多個進程方法(提高效率)1)vi?all.sh
f1.sh&
f2.sh&
f3.sh&
2)(f1.sh&);(f2.sh&);(f3.sh&)
3){?f1.sh&?f2.sh&?f3.sh&?}
三、進程優(yōu)先級調(diào)整:nice, renice
靜態(tài)優(yōu)先級:100-139
進程默認啟動時的nice值為0,優(yōu)先級為120
只有root用戶才能降低nice值(提高優(yōu)先性),普通用戶只能提高自己的nice值(降低優(yōu)先級)
一般使用者僅可調(diào)整自己程序的 Nice 值,且范圍僅為 0 ~ 19 (避免一般用戶搶占系統(tǒng)資源);
nice調(diào)整范圍: -20, 19
注:值越低優(yōu)先級越高
(1) 以指定的nice值啟動一個進程:nice?-n?#?COMMAND
實例:[root@young?~]#?nice?-n?-16?top&
[root@young?~]#?ps?axo?ni,comm|grep?top
-16?top
(2) 調(diào)整運行中的進程的nice值:renice?-n?#?PID
實例:[root@young?~]#?renice?-n?10?89822
89822?(process?ID)?old?priority?-16,?new?priority?10
[root@young?~]#?ps?axo?ni,comm|grep?top
10?top
注意:普通用戶僅有權(quán)限調(diào)大nice值;
總結(jié)
以上是生活随笔為你收集整理的linux普通用户发送信号,Linux信号发送与作业控制的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: design.js
- 下一篇: 中文OCR的汉字按常见度的划分