我的apache2服务有PrivateTmp=true
。当服务第一次启动时,它可以正常工作,但是几天后,向/tmp写入“没有这样的文件或目录”就失败了。为了调试,我尝试了运行nsenter -t <apache-pid> -m bash
,并确认了/tmp
的存在,但是mkdir /tmp/test
在“没有这样的文件或目录”时失败了。我不想删除PrivateTmp=true
指令。
如果我重新启动服务,它就会重新开始工作。
/tmp内部的挂载行表示它被挂载到/dev/nvme0n1,这在我看来很奇怪,但无论是在/tmp启动后立即工作时还是当它不可写时,都是如此。
有人知道为什么/tmp突然变得不可写了吗?
发布于 2021-06-07 18:19:56
我发现了问题。
我启用并配置了tmpreaper
,以清理/tmp
下的旧文件和目录。我没有/tmp/systemd-private-*
的排除规则,所以tmpreaper删除了apache2的私有tmp目录。
发布于 2021-06-07 18:14:21
据我所知,PrivateTmp=true
完全禁止您在调试时尝试的内容。守护进程将创建自己的子目录,并相应地更改其命名空间。
由于您的问题只在一段时间后才会发生,所以我有以下建议:确保应用程序清理,并且不将大型文件存储在虚拟/tmp
目录中。据我所知,这个目录正在使用RAM,没有持久的文件系统。你在这里的空间有限。
您可能需要将/tmp目录的大小记录一段时间。如果它继续增长,这就是问题所在。
https://serverfault.com/questions/1065999
复制相似问题