我正在迁移以前在 Ubuntu 12.04 LTS 上运行的 Web 应用程序。它广泛使用/dev/shm/
. 我发现应用程序数据正在从/dev/shm/
Ubuntu 16.04 LTS 服务器上消失。
是否有某种垃圾收集从那里删除文件和目录?我看到 12.04 配置了这个符号链接:/dev/shm -> /run/shm
,而 16.04 正好相反:/run/shm -> /dev/shm
。不过,我不明白这会有什么不同。
更新
- 我怀疑 AppArmor,但删除它并没有改变行为
- 目录结构的删除似乎每五分钟发生一次
- 包含文件的目录最终会被删除,但不会那么快
- 我怀疑文件/目录的年龄会影响删除
- 看起来这家伙也遇到了同样的问题。
经过数小时的搜索和阅读,我找到了罪魁祸首。这是一个设置
systemd
。包含默认配置选项,每个选项都被/etc/systemd/logind.conf
注释掉。该RemoveIPC
选项yes
默认设置为。该选项告诉systemd
清理未登录的“用户帐户”的进程间通信(IPC)。这不会影响“系统帐户”就我而言,文件和目录是为用户帐户创建的,而不是系统帐户。
有两种可能的解决方案:
adduser -r
或adduser --system
)创建的用户/etc/systemd/logind.conf
,取消注释该行RemoveIPC=yes
,将其更改为RemoveIPC=no
,保存并重新启动系统就我而言,我选择了选项 #2,因为用户已经创建。
参考: