定位到代码之后去日志文件里面查找DBus error:后续输出的具体错误原因。日志输出错误如下:lstat /usr/bin/dde-printer (deleted) no such file or directory。对于这个错误,刚开始以为是dde-printer没有通过白名单验证(DBus的这个安装包的接口需要认证才能调用),后续排查了这个问题。但是在本地二进制存在的情况下,为何报dde-printer不存在?在没有思路的情况下,去虚拟机安装了一个问题iso,通过排除法排除各种干扰因素,最后发现更新完成之后,只要重启了系统,就不会出现这个bug。于是猜测是因为更新了dde-printer二进制程序之后,由于dde-printer一直在后台启动,这时候导致本地程序和内存不一致,所以调用DBus接口时,DBus返回这个错误。
# restart process after updating ProcessName="dde-printer -m 1"#进程 ID=`ps -ef | grep "$ProcessName" | grep -v "grep" | awk '{print $2}'` #注意此shell脚本的名称,避免自杀 if [ -z "$ID" ];then echo"process id is empty, process is not existed..." else echo"$ID process will restart..." kill -USR1 $ID#通知进程重启 echo"process has restart..." fi