我正在迁移之前在 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,但删除它并没有改变行为
- 目录结构的删除似乎每五分钟发生一次
- 包含文件的目录最终会被删除,但速度不会那么快
- 我怀疑文件/目录的年龄会影响删除
- 看起来像这个人也遇到了同样的问题。
答案1
经过几个小时的搜索和阅读,我找到了罪魁祸首。这是一个设置systemd
。包含/etc/systemd/logind.conf
默认配置选项,每个选项均被注释掉。默认情况下,RemoveIPC
选项设置为。该选项指示清除未登录的“用户帐户”的进程间通信 (IPC)。这不会影响“系统帐户”yes
systemd
就我而言,文件和目录是为用户帐户而不是系统帐户创建的。
有两种可能的解决方案:
- 使用系统用户创建文件/为系统用户创建文件--使用系统选项创建的用户(
adduser -r
或adduser --system
) - 编辑
/etc/systemd/logind.conf
,取消注释该行RemoveIPC=yes
,将其更改为RemoveIPC=no
,保存并重新启动系统
就我而言,我选择了选项#2,因为用户已经创建。
参考: