当前位置:  技术问答>linux和unix

关于SIGTERM信号?

    来源: 互联网  发布时间:2015-11-02

    本文导语:  我写了一个后台程序,在系统重启时会做一些保存工作。因此用signal()对SIGTERM进行了处理。测试时让后台程序运行,用命令kill -15  PID,保存工作运行良好。但是实际测试,我用命令 reboot,后台进程却不能接收...

我写了一个后台程序,在系统重启时会做一些保存工作。因此用signal()对SIGTERM进行了处理。测试时让后台程序运行,用命令kill -15  PID,保存工作运行良好。但是实际测试,我用命令 reboot,后台进程却不能接收到SIGTERM信号,未进行保存工作。
   同样都是发送SIGTERM信号给进程(kill和reboot),为什么处理不一样?请指点。

|
reboot在正常运行的系统相当于halt,它们等价于shutdown -r或者shutdown -h
你的问题我也不是太清楚,但是可以给你一些建议,你可以用
shutdown -r +5
试一下, 表示5分钟后reboot. 有的时候进程会因为来不及结束而在结束时显示一些错误信息.

|
很多系统是先发送SIGTERM,然后过了一段时间后,再发送SIGKILL的。

比如,Fedora的runlevel 0脚本中:
/etc/rc0.d/S01halt

runcmd $"Sending all processes the TERM signal..." /sbin/killall5 -15
sleep 5
runcmd $"Sending all processes the KILL signal..."  /sbin/killall5 -9


|
看看reboot实现部分的shell代码,也可以根据自己需要对这个reboot做相应的修改。

|
延长一下SIGTERM的等待时间试试看呢

|
个人认为:需要在 init进程改变runlevel为6之前,让runlevel先变为1,作完你的工作后,再让runlevel变为6。实现起来,应该需要接管"shutdown -r or -h"命令,自己按照需要来处理。

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3