为啥 /dev/shm 文件夹可以在 Ubuntu 18.04 中定期清理?

Posted

技术标签:

【中文标题】为啥 /dev/shm 文件夹可以在 Ubuntu 18.04 中定期清理?【英文标题】:Why may /dev/shm folder be periodically cleaned in Ubuntu 18.04?为什么 /dev/shm 文件夹可以在 Ubuntu 18.04 中定期清理? 【发布时间】:2019-11-18 09:30:49 【问题描述】:

我有一个适用于 /dev/shm 文件夹的 python 应用程序。 它的进程不断地在它自己的 /dev/shm/subfolder 中创建、读取和删除二进制文件。 在大多数 Ubuntu 服务器上,它运行良好,没有任何错误、内存泄漏。

但是,有一个 Ubuntu 服务器有一个非常奇怪的行为。 有时大约每小时(但不是严格定期)整个 /dev/shm 文件夹都会被清理一次。 例如,应用程序中或手动创建的所有文件和文件夹都消失了。

应用程序本身不这样做,没有其他应用程序、服务、守护程序被引入那里故意这样做。应用程序不能超过 20M,这离限制太远了。

tmpfs 7.8G 8.3M 7.8G 1% /dev/shm

是否有任何想法可能是问题的根本原因?

【问题讨论】:

问:您是否查看过系统的 systemd RemoveIPC 选项?是不是罪魁祸首? 是的,设置 RemoveIPC=no 解决了这个问题,非常感谢您的回答。 感谢您的回帖。请随意“接受”——这会让有同样问题的人更有可能找到解决方案。 【参考方案1】:

看这里:

superuser.com: Why are the contents of /dev/shm/ is being removed automatically

Ask Ubuntu: 16.04 LTS and /dev/shm/ Files Disappearing

经过数小时的搜索和阅读,我找到了罪魁祸首。它是 systemd 的设置。 /etc/systemd/logind.conf 包含默认值 配置选项,每个选项都被注释掉。 RemoveIPC 选项默认设置为yes。该选项告诉 systemd 清理 未记录的“用户帐户”的进程间通信 (IPC) in. 这不会影响“系统帐户”

在我的例子中,文件和目录是为用户创建的 帐户,而不是系统帐户。

有两种可能的解决方案:

    使用/为系统用户创建文件 -- 使用系统选项创建的用户(adduser -r 或 adduser --system)

    编辑 /etc/systemd/logind.conf,取消注释 RemoveIPC=yes 行,将其更改为 RemoveIPC=no,保存并重新启动系统

就我而言,我选择了选项 #2,因为用户已经 已创建。

【讨论】:

只需要重启systemctl restart systemd-logind

以上是关于为啥 /dev/shm 文件夹可以在 Ubuntu 18.04 中定期清理?的主要内容,如果未能解决你的问题,请参考以下文章

浅析/dev/shm

Linux 一键配置 Oracle 主机 /dev/shm

/dev/shm

Linux 一键配置 Oracle 主机 /dev/shm

Linux 一键配置 Oracle 主机 /dev/shm

Linux下的tmpfs文件系统(/dev/shm)