我有一个应用程序,它创建了许多unix套接字,以便与它在运行时生成的所有进程进行交互。 我认为/ run / appname将是他们生活的好地方,因为从我的理解,/ run应该用于来自应用程序的信息,这些应用程序仅在应用程序的运行时有效。
但是我发现了
$ mkdir /run/appname
mkdir: cannot create directory '/run/appname': Permission denied
那么为什么普通用户不能在/ run中创建文件?它是干什么用的? 我应该保持/ tmp吗?
答案 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
,然后设置适当的权限,然后将套接字放在那里。