免费注册 查看新帖 |

Chinaunix

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

请教一个在/etc/rc.local里面启动程序的问题,为啥要sleep 2 [复制链接]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-01-12 11:00 |只看该作者 |倒序浏览
下面这几行是我添加到/etc/rc.local的
#Start SSH server
service sshd start

#Start config server
/usr/local/sbin/config_server

##start admin server
/usr/local/apache/bin/apachectl startssl

其中sshd是系统自带的,/usr/local/下面的APCHE是下载官方代码编译的
那个config_server是我自己写的daemon程序
系统启动后,sshd和apache都正常启动了,但是我自己写的daemon程序没起来
我从SSH或键盘登录系统,手工输入/usr/local/sbin/config_server就能正常启动这个程序

后来我修改了/etc/rc.local
#Start config server
sleep 2
/usr/local/sbin/config_server

就比原先多了个sleep 2,现在重启系统,这个程序正常启动了

我在程序中出错位置bind(socket, &addr, &len);后perror(NULL);
在启动过程中出现错误信息: Cannot assign requested address
加了sleep 2之后,错误消失,程序启动正常

初步推测,应该是bind()系统调用发生的时候系统还没有所需的IP地址,
可是我在这个程序启动之前在/etc/rc.local插入ifconfig eth0
启动显示这个所需地址已经加载,但还是出错(如果没有sleep 2)

应该是我的程序的问题,因为SSHD和APACHE都在/etc/rc.local中正确启动
究竟错在什么地方?

论坛徽章:
0
2 [报告]
发表于 2009-01-12 11:22 |只看该作者

回复 #1 safedead 的帖子

一般这种问题 setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, ...)能搞定问题... 详细情况请参考UNPv1(stevens), 具体还要看你的实际情况...

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
3 [报告]
发表于 2009-01-12 11:41 |只看该作者
service sshd start

做事要规范,
chkconfig --level 2345 sshd on

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
4 [报告]
发表于 2009-01-12 13:43 |只看该作者
原帖由 mwishes 于 2009-1-12 11:22 发表
一般这种问题 setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, ...)能搞定问题... 详细情况请参考UNPv1(stevens), 具体还要看你的实际情况...


不是这个问题, 如果没有设置SO_REUSEADDR, 当服务短时间重启,
出错信息是:Address already in use

首先,我设置了SO_REUSEADDR
其次, 可以确认系统启动脚本执行到/etc/rc3.d/S99local的时候没有人跟我这个程序抢监听地址

论坛徽章:
0
5 [报告]
发表于 2009-01-12 21:23 |只看该作者

回复 #1 safedead 的帖子

不同服务的启动顺序有时候是需要考虑的。
你那样强行加sleep应该是认为的让两个“服务”串行起来。
没有sleep造成服务启动期间并行造成你的错误。
我是猜的。

你看那些rc.d里对应个各种服务,一般是启动一个,OK一个再启动第二个的。

先按照flw说的方法试一下,没准问题能解决。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP