免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123
最近访问板块 发新帖
楼主: James_xu
打印 上一主题 下一主题

为什么加入/etc/rc2.d 的脚本,系统启动以后不执行。在线等 [复制链接]

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
21 [报告]
发表于 2008-10-31 18:49 |只看该作者

似乎是没有输出环境变量的错误。

这个似乎是没有输出环境变量的错误吧。
由init和crond等系统进程调用的进程,和用户登录后的进程不同,没有预设的许多环境变量,如PATH、JAVA_HOME之类。所以如果你的脚本中需要用到这些变量,必须事先定义,并且输出
楼主的错误在于:他只定义了环境变量,但没有输出。所以在脚本的子shell中无法生效。
大致浏览了一下楼主的脚本,用到子shell的地方似乎只有`cat $pidfile`一种情况。因为cat是外部命令,如果PATH变量没有定义的话,不加绝对路径直接调用会出错的,结果就是取不到Daemon的pid,所以判断daemon是否在运行的条件测试一定会错,进一步杀死进程的命令也不可能正确执行。
不过脚本中daemon进程从程序逻辑上分析会执行到,进程本身是又通过绝对路径调用的,应该会正常运行才对。我推测是该进程中会用到一些环境变量,因为没有定义,所以很快地出错退出了,给人没有执行的假象。楼主可以看看日志,可能会有反映。

总之,建议楼主加上
export DAEMON PATH
试试再说。

论坛徽章:
0
22 [报告]
发表于 2008-10-31 19:52 |只看该作者
我手工执行一下命令都可以的。
#/etc/init.d/cwmpd start
#/etc/init.d/cwmpd stop
#/etc/init.d/cwmpd restart

手动可以正常运行,那是有"$1"这个(start|stop|restart)位置变量,而在脚本中没有对"$1"进行定义,系统重启时不知"$1"这个位置变量,无法运行该脚本(其它脚本能正常运行,是不是因为/etc/rc2.d/Sxxscript中的"S"的原因,具体是如何实现的我就不得而知了)。
以上只是我个人想法,有可能是错误的,敬请大家指正。

参考一下:大部分/etc/init.d/中的启动脚本在开始的时候会载入一个函数文件(/lib/lsb/init-functions),然后在脚本中调用该函数文件中的函数。

论坛徽章:
0
23 [报告]
发表于 2008-11-03 12:56 |只看该作者
根据启动日志,是因为脚本中没有加入library路径并且export,也就是环境变量没有弄好,导致程序退出,

谢谢,已经解决了。怎么给分啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP