这个文件夹是什么:我的Fedora系统上的/run/user/1000及其作用是什么?

~ $ df -h
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           1.2G   20K  1.2G   1% /run/user/1000


编辑:2019年6月7日。

我的两个答案对于在哪个位置存储在哪个目录或不同位置的文件,我并没有达成共识:

Patrick:


systemd之前,这些应用程序通常存储其文件<在
/tmp中。


再在这里:


/tmpFHS指定的唯一本地位置,
并可由所有用户写入。


Braiam:


该目录的用途曾经由/var/run服务。通常,出于向后兼容性的目的,程序可能会继续使用/var/run来满足为/run设置的
要求。


然后再次此处:


迁移到使用/run的程序应停止使用
/var/run,除非在/var/run一节中有说明。


因此,是/run/user/1000的父亲是哪个人,为什么在另一个答案中都没有提及对方对/run/user之前使用的目录的说法。

评论

在任何一个答案中都没有提及其他人对/ run / user之前使用的目录的说法,因为只有一个人在实际讨论这个问题。 Braiam的答案讨论了/ run之前使用的目录,而不是/ run / user。

帕特里克(Patrick)提出了对“ / run / user / 1000的父亲”问题的答案,这是有道理但没有根据的陈述。 Braiam没有解决这个问题。过去,正在运行的进程使用的文件(即临时文件)的存储位置可能只是假定为标准的/ tmp目录。如果是这样,很难证实这一点,因为很少有人提供传统或显而易见的书面记录。要提供充分的答案,可能需要对计算机历史进行一些协调的研究。

谢谢您的投入

@somethingSomething在更新后再次跌倒。为了回答您的澄清要求,从未将/ var / run用于与/ run / user / $ id相同的目的。 / var / run只能由root用户写入,因此不能由用户使用。 / run / user / $ id适用于普通用户。 / run / user / $ id的存在也不反对使用/ var / run。它们有不同的用途。 / var / run用于系统范围的服务。 / run但是不赞成使用/ var / run,但这完全是一个单独的问题,与/ run / user / $ id无关。

#1 楼

/run/user/$uidpam_systemd创建,用于存储该用户正在运行的进程使用的文件。这些可能是诸如密钥环守护程序,pulseaudio等之类的东西。

在systemd之前,这些应用程序通常将其文件存储在/tmp中。由于主目录通常通过网络文件系统挂载,因此它们无法使用/home/$user中的位置,并且这些文件不应在主机之间共享。 /tmp是FHS指定的唯一本地且所有用户均可写入的位置。

将所有这些文件存储在/tmp中是有问题的,因为/tmp是每个人都可写入的,尽管您可以更改所有权&模式上创建的文件,使用起来更加困难。

因此systemd出现并创建了/run/user/$uid。该目录在系统本地,并且只能由目标用户访问。因此,希望将文件存储在本地的应用程序不必再担心访问控制。
它还能使事情保持井井有条。当用户注销并且没有活动的会话时,pam_systemd将清除/run/user/$uid目录。在/tmp周围散布着各种文件,您无法执行此操作。

评论


应该提到的是,它被称为$ XDG_RUNTIME_DIR,记录在standard.freedesktop.org/basedir-spec/basedir-spec-latest.html中

–o11c
14-10-19在6:32

如果发生以下情况怎么办:我已经使用nohup启动了“后台”计算过程,并将其中间结果/数据保存在临时文件中。我可以指望它在进程运行时不会被擦除,还是会被擦除,并且以nohup启动的进程会丢失其数据?

– imz-伊万·扎哈拉里舍夫(Ivan Zakharyaschev)
15年5月19日在9:39

它不太可能被擦除,但是/ run / user是fedora中的tmpfs文件系统,因此它将限于为其分配的空间量。请参阅上面的df输出。

–jsbillings
15年7月4日在23:51

如果pidfile是在root下运行的服务,该怎么办。它的PID应该放在/ var / run或/ var / run / user / 0下吗?如果由于没有活动的会话,将其删除吗?

– TSG
16-3-25在14:20

@TSG我认为由于root用户没有活动的登录会话,因此也不会有/ var / run / user / 0文件夹。我相信这些文件应该放在/ run下(而不是现在不建议使用的/ var / run)。

– Peter Hansen
20 Jan 19 '20在16:22

#2 楼

根据FHS(文件层次结构标准)的最新草案,/ run:

此目录包含描述系统自启动以来的系统信息数据。在引导过程开始时,必须清除(酌情删除或截断)此目录下的文件。
此目录的用途曾经由/ var / run服务。通常,出于向后兼容的目的,程序可能会继续使用/ var / run来满足针对/ run提出的要求。迁移到使用/ run的程序应停止使用/ var / run,除非/ var / run一节中另有说明。
程序可能具有/ run的子目录;对于使用多个运行时文件的程序,建议这样做。用户也可能有/ run子目录,尽管必须注意适当限制访问权限,以防止未经授权使用/ run本身和其他子目录。

对于/run/user目录,使用由不同的用户服务(例如dconf,pulse,systemd等)提供,它们需要一个用于放置其锁定文件和套接字的位置。系统中登录的目录与不同用户的UID一样多。