linux普通用户发送信号,Linux信号发送与作业控制
前言
Linux中進程間通信又稱為IPC(Inter process communication),大致上可以分為這么幾類:消息隊列(message queue),旗語(semerpore),共享內存(shared memory),信號(signal),Unix域套接字,socket等。
一、信號發送
signal用來向進程傳遞微小的信息。
顯示可用信號:kill?-l
man?7?signal
1.kill命令
格式:kill?[-SIGNAL]?PID
SIGNAL:(1) 信號的完整名稱,例如SIGHUP、SIGINT、SIGKILL、SIGTERM、SIGCONT、SIGSTOP
(2) 信號簡稱:HUP、KILL
(3) 信號數據標識:1,2, ...
SIGHUP:1, 讓進程重讀配置文件中的信息,而無須重啟進程;
SIGINT:2, interrupt,打斷正在運行中進程;相當于Ctrl+c
SIGKILL: 9, 強行中止正在運行的進程
SIGTERM:15, 優雅關閉正在運行的進程 SIGSTOP:19, 暫停進程
SIGCONT: 18,繼續暫停進程
實例:[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命令
按命令名字發送信號。
格式: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,真正發起運行命令者
-t?terminal:?與指定終端相關的進程
-P?pid:?顯示父進程為此處指定的進程的進程列表
實例:[root@young?~]#?pkill?httpd
[root@CentOS?~]#?pkill?-U?apache
二、Linux作業控制
1.系統job作業
(1)job種類:前臺作業(foregroud):通過終端啟動,且啟動后會一直占據終端;
后臺作業(backgroud):可以通過終端啟動,但啟動后即轉入后臺運行(釋放終端);
(2)讓作業運行于后臺
1) 運行中的作業:Ctrl+z
送往后臺后,作業會轉為停止態;相當于發送kill -19信號
2) 尚未啟動的作業:# COMMAND &
此類作業雖然被送往后臺,但其依然與終端相關;如果希望把送往后臺的作業剝離與終端的關系:# nohup COMMAND &
實例:[root@CentOS?~]#?nohup?yes?&
[1]?8444
[root@CentOS?~]#?nohup:?ignoring?input?and?appending?output?to?`nohup.out'
(3)查看所有的作業:#jobs命令
實例:[root@young?~]#?jobs?-l??#?-l選項顯示進程PID
[1]+?23602?Running?????????????????nohup?yes?&
+/- 表示優先級;當調用時不加作業號會默認調用+的命令[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)可實現作業控制的常用命令:#fg??[[%]JOB_NUM]:把指定的作業調回前臺;
#bg??[[%]JOB_NUM]:讓送往后臺的作業在后臺繼續運行;
#kill??%JOB_NUM:終止指定的作業;
實例:[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&?}
三、進程優先級調整:nice, renice
靜態優先級:100-139
進程默認啟動時的nice值為0,優先級為120
只有root用戶才能降低nice值(提高優先性),普通用戶只能提高自己的nice值(降低優先級)
一般使用者僅可調整自己程序的 Nice 值,且范圍僅為 0 ~ 19 (避免一般用戶搶占系統資源);
nice調整范圍: -20, 19
注:值越低優先級越高
(1) 以指定的nice值啟動一個進程:nice?-n?#?COMMAND
實例:[root@young?~]#?nice?-n?-16?top&
[root@young?~]#?ps?axo?ni,comm|grep?top
-16?top
(2) 調整運行中的進程的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
注意:普通用戶僅有權限調大nice值;
總結
以上是生活随笔為你收集整理的linux普通用户发送信号,Linux信号发送与作业控制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: design.js
- 下一篇: 服务器虚拟多台linux,Virtual