1、故障描述
掉电后,启动vncserver无法启动,或启动后连接vncserver黑屏
2、影响范围
非正常关机流程的机器
3、故障处理过程
第一次开机后vncserver服务无法正常启动,使用restart手动也无法拉起。按照现场人员提醒使用reboot命令重启机器后,服务可以使用restart手动拉起,但断电时间过长(超过20min)后vncserver无法启动问题会复现。
将rc.local中与vncserver相关内容全部注释之后,服务仍然无法正常启动,查看相应日志可以发现vncserver认为存在该类型文件进而退出。
4、原因定位
强制断电,vncserver未正常退出。导致/tmp/.X11-unix/X[0-9]文件以及/root/.vnc/*.pid文件残留,后续启动若存在该类型文件则会认定已存在相应的vncserver,则会退出。
定位之前,发现rc.local有存在删除相应文件的内容
这样做会引发以下问题:
1.rc.local和vncserver@1/2的启动顺序没有关联,可能vncserver启动失败后才执行rc.local中rm相关操作
2.若问题1中vncserver@1/2启动在前,后续执行rc.local时删除/tmp/.X11-unix/X*和/root/.vnc/*.pid并restart vncserver,由于删除pid文件这vncserver中ExecStop不能正确停掉相应的vncserver进程会导致有残留的vnc服务在运行,导致后续流程错误。
5、解决方案
删除/注释掉rc.local中对于掉电前相应缓存文件清理以及restart vncserver
使用tmpfiles.d确保在vncserver启动之前清理掉电前的缓存文件。
新建/lib/tmpfiles.d/vncserver.conf文件,
文件内容如下
rm -rf /tmp/.X11-unix/X*
rm -rf /root/.vnc/*.pid
rm -rf /root/.vnc/*.log