Ubuntu 20.xx 守护进程运行可执行文件间歇性无法访问问题咨询
问题根因分析
- 最高概率原因:你开启了Ubuntu的 eCryptfs用户主目录加密 功能
Ubuntu默认提供的用户主目录加密方案,会将用户的真实文件加密存储在
/home/.ecryptfs/你的用户名/路径下,只有当用户通过SSH、本地登录等方式完成身份校验后,系统才会自动将解密后的目录临时挂载到/home/你的用户名/路径下;当用户退出登录后,挂载点会被自动卸载,此时直接访问/home/myUser/下的路径就会提示不存在。
你用Putty登录的操作刚好触发了主目录的解密挂载,所以后续服务重启时就能正常访问到对应路径,和你日志里的时间点完全吻合。 - 其他次要可能原因:
/home/myUser/myFolder/对应的路径是用户级自动挂载的网络存储(NFS/SMB等),仅在用户登录后才会完成挂载- 你给上级目录设置了特殊访问权限,仅当用户登录后通过PAM模块分配的动态组/权限才能访问
可行解决方案
- 如果确认是主目录加密导致的问题,可任选一种方案处理:
- 将程序和相关文件移出加密主目录,放到
/opt/、/usr/local/这类系统级公共路径下,同时修改启动脚本里的对应路径,从根本上避免依赖用户登录才挂载的目录 - 调整eCryptfs配置,关闭退出登录自动卸载主目录的特性,执行命令:
ecryptfs-umount-private --disable,操作后即使用户退出登录,主目录也会保持挂载状态 - 将systemd服务调整为用户级服务(user systemd),设置为用户登录时才启动,和主目录的挂载生命周期对齐
- 将程序和相关文件移出加密主目录,放到
- 如果是网络存储挂载导致的问题,可以在systemd服务配置里添加依赖,等待网络和挂载点就绪后再启动服务,添加如下配置到你的
.service文件的[Unit]段:After=network.target mnt-yourmountpoint.mount Requires=network.target mnt-yourmountpoint.mount
内容的提问来源于stack exchange,提问作者TempQuery
相关产品推荐
相关产品推荐

