我有一个应用程序,它创建了很多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/