探索 Linux 上的 /run

Linux 系统在执行时资料方面的工作方式发生了微小但重大的变化。
-- Sandra Henry-stocker(作者)
如果你没有密切关注,你可能没有注意到 Linux 系统在执行时资料方面的工作方式有一些小但重大的变化。 它重新组织了档案系统中可访问的方式和位置,而这个变化在大约八年前就开始了。虽然这种变化可能不足以让你的袜子变湿,但它在 Linux 档案系统中提供了更多一致性,值得进行一些探索。
要开始,请转到 /run。如果你使用 df 来检查它,你会看到这样的输出:
$ df -k .
Filesystem 1K-blocks Used Available Use% Mounted on
tmpfs 609984 2604 607380 1% /run
它被识别为 “tmpfs”(临时档案系统),因此我们知道 /run 中的档案和目录没有储存在磁盘上,而只储存在内存中。它们表示储存在内存(或基于磁盘的交换空间)中的资料,它看起来像是一个已挂载的档案系统,这个可以使其更易于访问和管理。
/run 是各种各样资料的家园。例如,如果你检视 /run/user,你会注意到一组带有数字名称的目录。
$ ls /run/user
1000 1002 121
使用长档案列表可以发现这些数字的重要性。
$ ls -l
total 0
drwx------ 5 shs shs 120 Jun 16 12:44 1000
drwx------ 5 dory dory 120 Jun 16 16:14 1002
drwx------ 8 gdm gdm 220 Jun 14 12:18 121
我们看到每个目录与当前登入的使用者或显示管理器 gdm 相关。数字代表他们的 UID。每个目录的内容都是执行中的程序所使用的档案。
/run/user 档案只是你在 /run 中找到的一小部分。还有很多其他档案。有一些档案包含了各种系统程序的程序 ID。
$ ls *.pid
acpid.pid atopacctd.pid crond.pid rsyslogd.pid
atd.pid atop.pid gdm3.pid sshd.pid
如下所示,上面列出的 sshd.pid 档案包含 ssh 守护程式(sshd)的程序 ID。
$ cat sshd.pid
1148
$ ps -ef | grep sshd
root 1148 1 0 Jun14 ? 00:00:00 /usr/sbin/sshd -D root 10784 1148 0 12:44 ? 00:00:00 sshd: shs [priv]
shs 10922 10784 0 12:44 ? 00:00:00 sshd: [email protected]/0
root 18109 1148 0 16:13 ? 00:00:00 sshd: dory [priv]
dory 18232 18109 0 16:14 ? 00:00:00 sshd: [email protected]/1
shs 19276 10923 0 16:50 pts/0 00:00:00 grep --color=auto sshd
/run 中的某些子目录只能使用 root 许可权访问,例如 /run/sudo。例如,以 root 身份执行我们可以看到一些与真实或尝试使用 sudo 相关的档案:
/run/sudo/ts# ls -l
total 8
-rw------- 1 root dory 112 Jun 16 16:37 dory
-rw------- 1 root shs 168 Jun 17 08:33 shs
为了与 /run 的变化保持一致,一些执行时资料的旧位置现在是符号连结。/var/run 现在是指向 /run 的指标,/var/lock 指向 /run/lock 的指标,可以保证旧的引用按预期工作。
$ ls -l /var
total 52
drwxr-xr-x 2 root root 4096 Jun 17 07:36 backups
drwxr-xr-x 19 root root 4096 Apr 18 13:46 cache
drwxrwsrwt 2 root whoopsie 4096 Jun 13 07:39 crash
drwxr-xr-x 75 root root 4096 Jun 9 15:14 lib
drwxrwsr-x 2 root staff 4096 Oct 16 2017 local
lrwxrwxrwx 1 root root 9 May 14 2018 lock -> /run/lock
drwxrwxr-x 17 root syslog 4096 Jun 17 00:00 log
drwxrwsrwt 2 root mail 4096 Jun 13 12:10 mail
drwxrwsrwt 2 root whoopsie 4096 Jan 5 2018 metrics
drwxr-xr-x 2 root root 4096 Jan 5 2018 opt
lrwxrwxrwx 1 root root 4 May 14 2018 run -> /run
drwxr-xr-x 9 root root 4096 Jun 16 2018 snap
drwxr-xr-x 9 root root 4096 Jun 9 15:14 spool
drwxrwxrwt 8 root root 4096 Jun 17 00:00 tmp
drwxr-xr-x 3 root root 4096 Jan 19 12:14 www
虽然技术上的变化很小,但转换到使用 /run 只是为了在 Linux 档案系统中更好地组织执行时资料。
via: https://www.networkworld.com/article/3403023/exploring-run-on-linux.html
作者: Sandra Henry-Stocker 选题: lujun9972 译者: wxy 校对: wxy
本文由 LCTT 原创编译, Linux中国 荣誉推出