我开机需要自启动两个程序,先启动服务程序,再启动测水位程序,按照之前写的方式,修改/etc/inittab文件的内容
respawn:如果相应的进程还不存在,那么init就启动该进程,同时不等待该进程的结束就继续扫描/etc/inittab文件;当该进程终止时,init将重新启动该进程。如果相应的进程已经存在,那么init将忽略该登记项并继续扫描/etc/inittab文件
=
但是出现了一个问题,服务程序自启动是没问题的,但是测水位程序自启动会挂掉(然而如果我一个在串口启动,一个telnet进去启动这两个程序又是没问题的,问题还是出在自启动上面),又因为::respawn:/nand/DetectWaterDepth ,所以DetectWaterDepth的进程号不断改变,一开始以为是读配置文件的问题,结果让两个程序读取不同的配置文件是没有问题的,后来定位到问题出现在载入字典的这句,
现在是找到原因了,但不知道怎么改程序可以解决这个问题,就想办法绕过去,写一个shell脚本来启动DetectWaterDepth程序。没有rc.local,rc1.d,rc2.d这些文件,所以还是修改inittab文件。
(1)serverfinal的自启动方式不变,还是inittab文件里写::respawn:/nand/serverfinal
(2)DetectWaterDepth启动方式实现:在/etc/init.d文件夹下新建一个gogogo.sh文件,文件内容如下
#!/bin/sh
cd /nand
./DetectWaterDepth
更改权限 chmod +x gogogo.sh
inittab里面写上::respawn:/etc/init.d/gogogo.sh
保存,重启,解决问题。但还是不知道为什么。