killall -USR1&-HUP

       USR1亦通常被用来告知应用程序重载配置文件;例如,向Apache HTTP服务器发送一个USR1信号将导致以下步骤的发生:停止接受新的连接,等待当前连接停止,重新载入配置文件,重新打开日志文件,重启服务器,从而实现相对平滑的不关机的更改。

以上摘自wiki:

http://zh.wikipedia.org/wiki/SIGUSR1%E5%92%8CSIGUSR2

呃,近日发现还有USR2,貌似这个USR1和2都可以用户自定义的,同样摘自上面的wiki:

POSIX兼容的平台上,SIGUSR1SIGUSR2是发送给一个进程信号,它表示了用户定义的情况。它们的符号常量头文件signal.h中定义。在不同的平台上,信号的编号可能发生变化,因此需要使用符号名称。

 

kill -HUP pid 或者 killall -HUP pName:
其中pid是进程标识,pName是进程的名称
如果想要更改配置而不需停止并重新启动服务,可以使用上面两个命令。在对配置文件作必要的更改后,发出该命令以动态更新服务配置。
根据约定,当你发送一个挂起信号(信号1或HUP)时,大多数服务器进程(所有常用的进程)都会进行复位操作并重新加载它们的配置文件。

 

与HUP有什么不同?????? (待以后解答)

 

以下转自技术博客“贝塔中的DBA”http://www.dbabeta.com/2009/dd-progress.html

作者:马齿苋

我需要的信息是

【killall命令,和kill命令一样,其作用是给指定的进程发送一个信号过去,不是平常所理解的仅仅是结束一个进程  
SIGHUP(1):对于没有那些不与终端交互的守护进程(Deamon Process),通常的设计是在接收到SIGHUP信号之后就会重新读取配置文件。】

而文章全文是:

命令

今天在commandlinefu.com网站看到这么一篇文章check the status of ‘dd’ in progress,试了下,效果很好。

现在一个终端中开启一个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命令一样,其作用是给指定的进程发送一个信号过去,不是平常所理解的仅仅是结束一个进程,就像下面摘录的man kill里面描述的一样。

DESCRIPTION 
      The command kill sends the specified signal to the specified process or 
      process group.  If no signal is specified, the  TERM  signal  is  sent. 
      The  TERM  signal  will  kill processes which do not catch this signal. 
      For other processes, it may be necessary to use the  KILL  (9)  signal, 
      since this signal cannot be caught.

所以上面的”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
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值