通过截获系统关机给进程发送的SIGTERM信号,然后给服务端发送网络请求;此时网络服务已然关闭,无法发送成功。
有没有什么办法在linux关机前发送网络通信请求?
如果关机是硬关机,也就是直接关闭电源,你是没有办法发送任何网络请求的。 如果关机是软关机,用户可以在shutdown等命令上挂钩子,在执行到函数时发送网络请求。
提这个问题本身,可能想监控机器的状态,如果是那样的话,不如使用外部的pingmesh来探测。
不知道题主基于哪个发行版本,提供一个思路可供参考
查找下对应发行版本的Runlevel
不同的等级对应不同的指令,然后写入脚本,在对应指令执行时,就会依次按照固定规则(重点)执行脚本
如果想要在网络关闭之前执行脚本,则该脚本的规则排序应该在网络控制脚本之前
由于linux关机命令的优先级别是很高,你要实现这个功能,理论上需要设置一个更高级别的进程来监听关机进程。住:本人没有试验过,请楼主实践求知
关机时,你的程序已经对系统没有多少控制了。处理时机不受控制。你应该服务器设置超时等判断客户端被关机了
可以编写一个内核模块,通过register_reboot_notifier注册一个网络请求的函数,系统在reboot/shutdown/halt的时候,会调用到你注册的钩子函数。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。