killall -USR1&-HUP

       USR1亦通常被用來告知應用程序重載配置文件;例如,向Apache HTTP服務器發送一個USR1信號將導致以下步驟的發生:停止接受新的連接,等待當前連接停止,重新載入配置文件,重新打開日誌文件,重啓服務器,從而實現相對平滑的不關機的更改。

 

kill -HUP pid 或者 killall -HUP pName:
其中pid是進程標識,pName是進程的名稱
如果想要更改配置而不需停止並重新啓動服務,可以使用上面兩個命令。在對配置文件作必要的更改後,發出該命令以動態更新服務配置。
根據約定,當你發送一個掛起信號(信號1或HUP)時,大多數服務器進程(所有常用的進程)都會進行復位操作並重新加載它們的配置文件。

 

kill -HUP pid
其中 pid 是進程標識。如果想要更改配置而不需停止並重新啓動服務,請使用該命令。在對配置文件作必要的更改後,發出該命令以動態更新服務配置。
根據約定,當您發送一個掛起信號(信號 1 或 HUP)時,大多數服務器進程(所有常用的進程)都會進行復位操作並重新加載它們的配置文件。以下例子詳細的講解一下用法。
eg1:
顯示了向所有正在運行的 Web 服務器進程發送掛起信號的一種方法。
告訴 Web 服務器重新加載其配置文件並對文件進行復位操作
[root@localhost httpd-2.2.13]# ps -A | grep httpd | grep -v grep | awk '{ print $1; }' | xargs -L 1 kill -HUP 
上面的命令中包含了很多的操作,所以讓我們來仔細地看一下管道的每個部分。ps 和 grep 命令用來在所有的進程中搜索 httpd(並且忽略用來搜索 httpd 進程的 grep 進程)。接下來,awk 只顯示輸出結果中的進程 ID,並將它傳遞給 xargs。然後,xargs 命令接受每個進程 ID(因爲使用了 -L 1 以便一次提取一行內容),並使用kill -HUP 向相應的進程發送一個掛起信號。
eg2:
更改/etc/ssh/sshd_config,將裏面的Port改爲新端口,比如28,然後 kill -HUP `cat /var/run/sshd.pid` 就行了。
現有連接自己不會斷,因爲kill -HUP `cat /var/run/sshd.pid` 只是HUP監聽的那個,已經建立的連接(不同的 pid)不會斷。
然後你在現有賬號下面exit,在用新的端口登陸就可以了。

 

我需要的信息是

【killall命令,和kill命令一樣,其作用是給指定的進程發送一個信號過去,不是平常所理解的僅僅是結束一個進程  
SIGHUP(1):對於沒有那些不與終端交互的守護進程(Deamon Process),通常的設計是在接收到SIGHUP信號之後就會重新讀取配置文件。】

命令

現在一個終端中開啓一個dd進程

dd if=/dev/zero of=/data3/test bs=1k count=1024000

然後在另外一個終端中用while來反覆執行killall命令

while killall -USR1 dd; do sleep 5; done

然後就能看到間隔5秒一次的輸出結果了

292289+0 records in 
292288+0 records out 
541861+0 records in 
541860+0 records out 
760037+0 records in 
760036+0 records out 
886602+0 records in 
886601+0 records out 
1007881+0 records in 
1007880+0 records out 
1024000+0 records in 
1024000+0 records out

所執行的killall命令循環會在dd命令執行結束之後退出。

說明

可能不熟悉linux的人會問了,爲什麼dd命令的進度輸出要killall命令來激發呢?其實答案很簡單,dd的進度輸出就是這麼設計的,再詳細
點就是dd命令在執行的時候接收到SIGUSR1信號的輸出當前的讀寫進度,而killall命令在這裏起的作用就是給dd進程發送這個信號。

killall命令,和kill命令一樣,其作用是給指定的進程發送一個信號過去,不是平常所理解的僅僅是結束一個進程。

所以上面的”while killall -USR1 dd; do sleep 5; done”就是每隔5秒就給所有的dd命令進程發送一個USR1信號,dd命令進程接收到信號之後就打印出自己當前的進度。

因爲kill命令能傳遞的信號不僅僅是SIGTERM(kill pid)和SIGKILL(kill -9
pid),還有很多其他的信號值,在這裏面還有一個很經常用的就是SIGHUP(1)了,對於沒有那些不與終端交互的守護進程(Deamon
Process),通常的設計是在接收到SIGHUP信號之後就會重新讀取配置文件。比如下面的

# 當你對smb.conf修改之後,運行下面的命令,修改就能生效了 
# 而不用再來一個smb restart 
killall -HUP smbd
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章