免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
1234下一页
最近访问板块 发新帖
查看: 11603 | 回复: 36
打印 上一主题 下一主题

请教Linux下长期运行的程序怎么动态读取配置参数? [复制链接]

论坛徽章:
2
操作系统版块每日发帖之星
日期:2015-08-06 06:20:00IT运维版块每日发帖之星
日期:2015-08-15 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-09-27 19:08 |只看该作者 |倒序浏览
一个长期运行的Linux程序,想在不退出运行的情况下,通过某种机制,可以让程序知道参数已经改变,然后程序重新读取这个参数。千万别告诉我,程序定时的读取参数文件,然后把读取到的参数与旧参数做比较。

我想了下,是否可以用kill来传递参数,也不知道能否做到。或者做一个共享内存,主程序开一个线程,等待一个命名信号,传参数的副程序往这个共享内存写入参数,写入完毕以后,触发这个命名信号,然后主程序从这个共享内存读取新的参数。主程序和副程序也可以做到同一个程序中,不过需要加不同的参数控制。

请大家多多指教。

论坛徽章:
0
2 [报告]
发表于 2010-09-27 19:41 |只看该作者
加载个TELNET模块,然后TELNET上,通知一下,不就OK了。

论坛徽章:
0
3 [报告]
发表于 2010-09-27 20:06 |只看该作者
通常的做法是注册一个信号,文件更改了,向这个程序发信号,这边再重新读取。

论坛徽章:
0
4 [报告]
发表于 2010-09-27 21:09 |只看该作者
樓上正解

论坛徽章:
0
5 [报告]
发表于 2010-09-27 22:21 |只看该作者
还有个办法就是打开一个端口,当这个端口收到内容后就重新读取参数

论坛徽章:
0
6 [报告]
发表于 2010-09-27 22:24 |只看该作者
本帖最后由 zzyong08 于 2010-09-27 22:26 编辑

通常的做法是,设置HUP信号的处理函数,配置文件变更时,向进程发送HUP信号。
进程收到HUP信号,重新解析配置文件。解析完毕后,把老的配置文件指针指向新的配置文件。

不过我觉得,先停止进程,然后启动也没啥不好。通过适当的停止进程,这个和重新解析配置文件,效果是一样的。

论坛徽章:
0
7 [报告]
发表于 2010-09-27 22:30 |只看该作者
inotify 应该就是lz 需要的。

详见 man 7 inotify

论坛徽章:
0
8 [报告]
发表于 2010-09-28 01:22 |只看该作者
回复 6# zzyong08 对于这个重起服务的做法对于不能下线的服务是不可行的。

论坛徽章:
2
操作系统版块每日发帖之星
日期:2015-08-06 06:20:00IT运维版块每日发帖之星
日期:2015-08-15 06:20:00
9 [报告]
发表于 2010-09-28 20:38 |只看该作者
十分感谢楼上各位大侠的回复。

论坛徽章:
0
10 [报告]
发表于 2010-09-30 08:21 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP