
service start xrdp
和systemctl start xrdp
都提示启动失败,systemctl status xrdp.service
没有得到任何有用信息,/var/log/xrdp.log一片空白,然后开始了漫长的debug之旅。
百思不得其解,没道理啊,重启前才用着了。
然后到晚上,打算做点别的事,用到了df -h
命令,看到/var/log挂载到了/tmpfs,也就是内存临时文件系统,才想起来xrdp.log是不是有权限问题导致xrdp无法写入log而启动失败。
查看xrdp配置文件/etc/xrdp/xrdp.ini/
发现日志确实是xrdp.log这个文件,尝试执行
chown xrdp:adm /var/log/xrdp.log
chmod 640 /var/log/xrdp.log
service start xrdp
就能够启动了!
可是这仍然没有解决问题——总不能每次开机都执行一次吧?
解决问题的最终办法是将LogFile的参数写成绝对路径,而且是硬盘的绝对路径而不是内存盘的绝对路径,例如
LogFile=/root/xrdp.log
或者我们不要日志了,直接写到/dev/null
也可以嘛。
如果非得把日志写到内存盘里,那我们就先禁用开机启动:
service disable xrdp
然后编辑/etc/rc.local
写入新建xrdp.log、授予权限以及启动xrdp服务端的命令。rc.local的各条目是有执行顺序的,只有上一条目执行成功返回true,才会执行下一条目,所以顺序一定不要搞错,也不要放在其它任何可能运行失败的条目之下。
chown xrdp:adm /var/log/xrdp.log
chmod 640 /var/log/xrdp.log
service start xrdp
也可以用&&把几行命令连在一起顺序执行。
chown xrdp:adm /var/log/xrdp.log && chmod 640 /var/log/xrdp.log && service start xrdp
大功告成!重启试试?
发表评论