这是一个bug,所有模块的control脚本都存在相同的问题。
发现过程:机器掉电后,有些agent没有开机自启动。
问题分析:
control脚本的 check_pid方法只检查进程id是否存,存在则只在控制台输出falcon-agent now is running already, pid=xxx(开机的时候根本不会有人注意到)
当机器意外关机时,var/app.pid文件中残留之前的pid进程号。
开机时其他进程使用了这个进程号,导致check_pid方法返回running,start直接终止,并且不会有任何日志输出。
修改建议:
可以参考/etc/rc.d/init.d/functions中对pid的处理,不仅检查进程id是否存在,还会查看basedir。
补充一个最简单的复现方式:
kill掉agent
echo '1' > var/app.pid
然后就会发现,agent起不来了。
这是一个bug,所有模块的control脚本都存在相同的问题。
发现过程:机器掉电后,有些agent没有开机自启动。
问题分析:
control脚本的 check_pid方法只检查进程id是否存,存在则只在控制台输出falcon-agent now is running already, pid=xxx(开机的时候根本不会有人注意到)
当机器意外关机时,var/app.pid文件中残留之前的pid进程号。
开机时其他进程使用了这个进程号,导致check_pid方法返回running,start直接终止,并且不会有任何日志输出。
修改建议:
可以参考/etc/rc.d/init.d/functions中对pid的处理,不仅检查进程id是否存在,还会查看basedir。
补充一个最简单的复现方式:
kill掉agent
echo '1' > var/app.pid
然后就会发现,agent起不来了。