运行时 unix 套接字应该在 Linux 上驻扎在哪里



我有一个应用程序,它创建了很多Unix套接字,以便与它在运行时生成的所有进程进行交互。我认为/run/appname 将是他们居住的好地方,因为据我所知,/run 应该用于仅在应用程序运行时有效的应用程序中的信息。

但是我发现

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

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

如果设置了变量,则应将它们放在$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给应用程序的用户,设置任何适当的权限,然后将套接字放入其中。

/run 是为根/系统应用程序保留的。

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/ 

相关内容

  • 没有找到相关文章