OS-Linux-后台启动与前台启动导致的差异故障-文件加载异常
故障描述:
linux系统的硬件网关,可以设置启动脚本实现重启时自动运行脚本内内容。
linux端c++程序,多进程,有共享库(.so)。架构简化如下:
软件看门狗进程、管理进程、功能进程。
脚本启动看门狗程序,看门狗内有心跳监听,可以接收其他进程的心跳,若心跳检测失败,执行对应脚本重启进程。
现象:
网关配置脚本通过追加“&”实现后台启动,但是每次后台启动,看门狗进程都无法正确接收管理进程的心跳,通过打印信息和代码功能屏蔽等方式可以发现,有一个动态库的接口每次调用时无法返回,库内的打印信息也未输出。
奇怪的是,同一个脚本,前台执行时并未出现相应问题,整体运行正常。
结论:
linux的/usr/lib下存在同名动态库。(库文件进行过修改,现用的库文件增加接口,故障接口正是新增接口)
即,后台脚本执行时,由于系统环境变量的原因,并未使用当前目录下库文件。