Linux之進程管理(2)相關命令之三

Linux之進程管理(2)相關命令之三html

(IPC)進程間通訊及信號控制命令 kill  killall  web

kill 命令正則表達式

kill - terminate a process,Inter Process Communicationapache

進程通訊工具,默認爲發送終止信號vim

選項及用法:centos

kill  -l  #顯示全部信號CODE及名稱bash

kill  [-SIGNAL]  pid...#指定發送信號給對應pid的進程,不指定信號代碼默認爲15信號服務器

常見的信號:(注:可使用man 7 signal打開幫助搜索 Standard Signals關鍵字)ide

1) SIGHUP: 無須關閉進程而讓其重讀配置文件工具

2) SIGINT: 停止正在運行的進程;至關於Ctrl+c

9) SIGKILL: 殺死正在運行的進程

15) SIGTERM:終止正在運行的進程(默認信號)

18) SIGCONT:繼續運行

19) SIGSTOP:後臺休眠

使用方法,指定一個信號,如:

信號號碼:kill  -1  932

信號名稱:kill  -SIGHUP  932

信號名稱簡寫:kill  -HUP  932

使用案例:

一、殺死真正打開的vim進程

#查看當前打開vimpid

[root@localhost ~]# ps -C vim -o pid= | tr -cd '[0-9]\n'
3042

#對當前vim進程發送15信號

[root@localhost ~]# kill -TERM 3042

#終端另外一方已經被退出了vim

Vim: Caught deadly signal TERM0,0-1         All
Vim: Finished.
Terminated


二、不重啓服務下重讀httpd服務配置

#查看當前httpd服務器狀態,未啓動

[root@localhost ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: inactive (dead)
     Docs: man:httpd(8)
           man:apachectl(8)

解析:這裏使用centos7dead表示未啓動,centos6版本使用命令行servic httpd status,顯示running表示啓動,顯示stopped...表示未啓動。

#啓動httpd服務器

[root@localhost ~]# systemctl start httpd

#查看80端口是否已經開啓,grep能匹配80端口出來表示服務以及啓動

[root@localhost ~]# ss -tan | grep ':80\>'
LISTEN     0      128         :::80                      :::*

#查看當前默認首頁配置(在httpd主配置文件中搜索DocumentRoot

[root@localhost ~]# grep '^[[:space:]]*DocumentRoot' /etc/httpd/conf/httpd.conf 
DocumentRoot "/var/www/html"

#查看對應的服務器根訪問點是否有網頁

[root@localhost ~]# ls /var/www/html/
index.html

解析:默認說明是對的,那麼此時經過其它工具訪問是能夠顯示html中的首頁的。也就是index.html頁面。

#下面經過另一個主機訪問,直接經過http協議下載工具下載服務器的index.html頁面

[root@mzf ~]# wget http://10.1.249.223/index.html
--2016-08-17 19:33:15--  http://10.1.249.223/index.html
Connecting to 10.1.249.223:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 109 [text/html]
Saving to: 「index.html.1」
 
100%[============================================================================================================>] 109         --.-K/s   in 0s      
 
2016-08-17 19:33:15 (1.09 MB/s) - 「index.html.1」 saved [109/109]

解析:出現下面連接完成的進度條表示已經能夠訪問,下面查看是否下載到了web頁面。

#查看當前目錄是否存在剛剛下載的index.html

[root@mzf ~]# ls -l ./index.html
-rw-r--r--. 1 root root 100 Sep  7  2016 ./index.html

#查看文件內容

[root@mzf ~]# cat index.html
<html>
<head>
<title>Hello world</title>
</head/>
<body>
  <h1>This is a http.</h1>
</body>
</html>

解析:如今服務端的 httpd服務正常運行,並且配置讀取成功,下面咱們修改httpd主配置文件中指定的DocumentRooot目錄。這裏咱們記住當前index.htmltitleHello world

 

#修改httpd.conf文件,改變DocumentRoot指定的目錄

wKiom1fVIMuxbBnFAAAFW7tiI1w406.png 

說明:此時Httpd服務首頁更目錄已經改爲了/var/ww/myhtml目錄,下面進行配置文件重讀。

#查看/var/www/myhtml有什麼文件

[root@localhost ~]# ls /var/www/myhtml/
index.html

#查看myhtml目錄下的index文件內容

[root@localhost ~]# cat /var/www/myhtml/index.html 
<html>
<head>
<title>server.mzf.com<title>
</head>
<body>
<h1>This is /var/www/myhtml dir</h1>
</body>
</html>

說明:這裏注意到這個文件的titleserver.mzf.com,下面重讀配置文件。

#先查看此時httpd的主進程pid

[root@localhost ~]# pgrep  '^httpd\>' | sort -n | head -n 1
3069

#發送SIGHUP(1)信號來通知httpd服務進程重讀配置

[root@localhost ~]# kill -SIGHUP 3069

#再次使用另一臺主機去經過httpd協議軟件下載此時myhtml中的index.html文件

[root@mzf ~]# wget http://10.1.249.223/index.html  
--2016-08-17 19:47:41--  http://10.1.249.223/index.html
Connecting to 10.1.249.223:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 111 [text/html]
Saving to: 「index.html.2」
 
100%[============================================================================================================>] 111         --.-K/s   in 0s      
 
2016-08-17 19:47:41 (1.06 MB/s) - 「index.html.2」 saved [111/111]
 
--2016-08-17 19:47:41--  http://./index2.html
Resolving .... failed: Temporary failure in name resolution.
wget: unable to resolve host address 「.」
FINISHED --2016-08-17 19:47:41--
Downloaded: 1 files, 111 in 0s (1.06 MB/s)

解析:這裏顯示下載成功,並且由於檢查目錄有同名文件,全部會自動存到當前目錄中的文件名稱爲index.html.2,注意藍色字那一行。

 

#因而查看index2.html信息title標籤是否爲server.mzf.com

[root@mzf ~]# cat index.html.2
<html>
<head>
<title>server.mzf.com<title>
</head>
<body>
<h1>This is /var/www/myhtml dir</h1>
</body>
</html>

解析:這裏就說了httpd服務以及成功接收了SIGHUP信號。

 

總結:這裏除了能夠去強制殺死進程(發送SIGKILL信號),那麼之後對某些支持SIGHUP信號的服務類進程進行修改配置,讓其生效也不須要再重啓整個服務了,只須要發送SIGHUP信號來讓服務進程組進行重讀進程參數。

 

 

killaill 命令

killall - kill processes by name

根據指定的進程名來殺死對應全部的進程

命令格式及選項:

killall  -l :列出全部信行列表

killall  [options]...  name  ...

 -r  [regx]  :使用擴展正則表達式來匹配進程名稱

 -s,  --signal  [SIGNAL] :發送指定信行

 -I:忽略進程名大小寫

 -q, --quiet :靜默模式

 -u USERNAME:只殺死指定進程全部者的進程

 -i,--interactive:交互式

案例(這裏打開兩個終端pts/0用於打開測試進程,pts/1用於進行進程處理):

1、殺死vim進程

#使用vim在另外一個終端打開一個文件

[root@localhost ~]# vim file

#查看此當前終端vim的進程列表

[root@localhost ~]# ps -C vim -o pid,comm,ruser,tty
   PID COMMAND         RUSER    TT
   3296 vim            root     pts/0

#取出進程號

[root@localhost ~]# ps -C vim -o pid= | tr -cd '[0-9]\n'
3296

#對此vim進程發送終止信行TERM

[root@localhost ~]# killall -TERM -r '^vim\>'

#再次查看剛纔打開vim的終端,已經vim進程已經終止了

Vim: Caught deadly signal TERM 0,0-1         All
Vim: Finished.
Terminated

注意:這裏使用擴展正則表達式只是對發起進程的命令名稱,而不是完整的命令名+參數,全部這裏只須要針對命令命令就好了。

 

2、殺死管道進程tar

#再次在剛纔打開vim的終端上測試,使用tar命令測試

[root@localhost ~]# tar -cvf - /* | tar -tvf -

#而後切換處處理的終端,查看剛纔終端的tar進程信息

[root@localhost ~]# pgrep -f 'tar.*-.*' -l -t pts/0
3319 tar
3320 tar

解析:爲何爲匹配出2行,由於tar -cvf - /* | tar -tvf - 這中間雖然用管道相連,可是在終端來看,實際上開啓了2個進程,及一個模擬打包,一個模擬查看列出。

#使用killall直接殺死tar的進程

[root@localhost ~]# killall -r '^tar\>' -9

 

三、殺死後臺進程

#切換到測試開開進程的pts/0終端,運行後臺查找命令

[root@localhost ~]# find / -type d -exec echo {} > /tmp/shfilelist.log \; &
[1] 83484

#查看其做業編號

[root@localhost ~]# jobs
[1]+  Running                 find / -type d -exec echo {} \; > /tmp/shfilelist.log &

#暫停後臺進程

[root@localhost ~]# killall -19 find
[root@localhost ~]# jobs
[1]+  Stopped                 find / -type d -exec echo {} \; > /tmp/shfilelist.log

#繼續運行

[root@localhost ~]# killall -18 find

#直接殺死

[root@localhost ~]# killall -9 -r '^\<find'
[root@localhost ~]# jobs
[1]+  Killed                  find / -type d -exec echo {} \; > /tmp/shfilelist.log
相關文章
相關標籤/搜索