nit*_*itz 8 linux filesystems pipe named-pipes tmp
我有一些通过命名管道相互通信的进程.目前,我在本地创建所有管道,并将应用程序保存在同一个工作目录中.在某些时候,假设这些程序可以(并且将)从不同的目录运行.我需要创建我在已知位置使用的这些管道,因此所有不同的应用程序都能够找到所需的管道.
我是Linux新手,不熟悉文件系统结构.在Windows中,我使用像AppData文件夹这样的东西来保存这些管道.我不确定Linux中的等价物是什么.
该/tmp
目录看起来可能很好地运行.我已经在一些地方看到它已经在系统关闭时被清除了(这很好,当我开始备份时,我可能不会重新创建管道.)但是我看到其他一些人说他们正在丢失文件当系统启动时,好像它是定期清理的,当我的应用程序使用这些管道时我不想发生这种情况!
是否有更适合特定应用商店的地方?或者/tmp
是我想要保留这些的地方(因为它们毕竟是暂时的).
我见过SaltStack使用/var/run
.唯一的问题是你需要root访问权来写入该目录,但是假设你要将你的进程作为系统守护进程运行.SaltStack /var/run/salt
在安装时创建并更改所有者,salt
以便以后可以在没有root权限的情况下使用它.
我还检查了文件系统层次结构标准,即使它不是那么重要,甚至他们说:
维护临时UNIX域套接字的系统程序必须将它们放在此目录中.
由于命名管道非常相似,我会采用相同的方式.
小智 5
在带有 systemd 的较新 Linux 发行版上/run/user/<userid>
(如果尚不存在,则在登录期间由pam_systemd/var/run
创建)可用于打开套接字并将 .pid 文件放在那里,而不是只有 root 有权访问的位置。另请注意,也可以使用so/var/run
的符号链接。有关更多信息,请查看此线程。这个想法是,系统守护进程应该在安装过程中创建一个具有适当权限的目录,并将其套接字/pid 文件放在那里,而用户运行的守护进程(例如pulseaudio)应该使用. 另一种选择是和。/run
/var/run/user/<userid>
/var/run/<daemon name>/
/run/user/<userid>/
/tmp
/var/tmp