今天遇到一个问题,因为运维相关的需求,需要停写线上的某个服务,代码里全部都做了停写,但代码上线部署后,问题出现了:
竟然还有数据往服务里写!
这就比较玄幻了,查了下所有的代码,发现该停的地方确实都停了,为什么呢?
最终经排查,确定原因:
cron脚本执行时,会将代码拉入内存,执行期间,读的都是内存中的代码,此时如果你更新了代码,但cron执行的实际还是老的代码,直至脚本执行完毕下一次再次启动才会执行新代码。
同理,一些daemon脚本服务也是一样的道理,上完代码后,需要手动kill重新启动才可以。