问题在于,他在调试的时候,在for c in $MULTI循环里面,为了保证每个子进程都启动成功,加了一个wait,后面在建立tun通道的时候为了调试又加了几个sleep。照着官方文档,他又加了个restart到rc.local里面,这样问题就来了,/etc/init.d里面是自动执行chilli start命令的,而加上了wait和sleep。init.d的启动脚本会等待,而这时候Linux在不同的tty又启动了rc.local里面的chilli restart命令,于是两个或三个相同的tun IP地址就会共同存在。
反正问题解决了,鉴于他为这种破事熬了三个通宵,我就可以以先知的口吻教育这个亲自调试程序的CEO:“尽信书不如无书”。开源系统的官方文档往往滞后,可能新版本早就解决了需要restart的问题,但是文档没有及时更新,导致这种问题的发生。
总结,了解各种系统的工作原理是多么重要。
Ubuntu亲自手动编译Openwrt (DreamBox): for njit....ipk