Linux上运行时unix套接字应该放在哪里?

时间:2013-10-26 20:35:10

标签: linux fhs

我有一个应用程序,它创建了许多unix套接字,以便与它在运行时生成的所有进程进行交互。 我认为/ run / appname将是他们生活的好地方,因为从我的理解,/ run应该用于来自应用程序的信息,这些应用程序仅在应用程序的运行时有效。

但是我发现了

$ mkdir /run/appname
mkdir: cannot create directory '/run/appname': Permission denied

那么为什么普通用户不能在/ run中创建文件?它是干什么用的? 我应该保持/ tmp吗?

2 个答案:

答案 0 :(得分:0)

/ run保留给root / system应用程序。

1. Contact your system admin and ask him to create a socket file for you

2. Put into /tmp or the specific forlder in $HOME/ 

答案 1 :(得分:0)

如果设置了变量,则应将它们放在$XDG_RUNTIME_DIR的子目录中。请参阅XDG Basedir标准:https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html

如果没有设置,有几个地方需要考虑。当用户登录时,许多发行版都有systemd(或者其他)创建/run/user/<user-id>,因此它可能是开始查看是否未设置$XDG_RUNTIME_DIR的最佳位置。如果失败了,我会回到/tmp。您可以尝试在/ tmp中随机命名一个目录,或者在用户名/ id之后创建一个带有应用程序名称的用户名chown,然后设置适当的权限,然后将套接字放在那里。