带你探索Linux上的/run

系统 Linux
如果你没有密切关注,你可能没有注意到 Linux 系统在运行时数据方面的工作方式有一些小但重大的变化。 虽然这种变化可能不足以让你的袜子变湿,但它在 Linux 文件系统中提供了更多一致性,值得进行一些探索。

[[268845]]

 Linux 系统在运行时数据方面的工作方式发生了微小但重大的变化。

如果你没有密切关注,你可能没有注意到 Linux 系统在运行时数据方面的工作方式有一些小但重大的变化。 它重新组织了文件系统中可访问的方式和位置,而这个变化在大约八年前就开始了。虽然这种变化可能不足以让你的袜子变湿,但它在 Linux 文件系统中提供了更多一致性,值得进行一些探索。

要开始,请转到 /run。如果你使用 df 来检查它,你会看到这样的输出:

  1. $ df -k .
  2. Filesystem 1K-blocks Used Available Use% Mounted on
  3. tmpfs 609984 2604 607380 1% /run

它被识别为 “tmpfs”(临时文件系统),因此我们知道 /run 中的文件和目录没有存储在磁盘上,而只存储在内存中。它们表示保存在内存(或基于磁盘的交换空间)中的数据,它看起来像是一个已挂载的文件系统,这个可以使其更易于访问和管理。

/run 是各种各样数据的家园。例如,如果你查看 /run/user,你会注意到一组带有数字名称的目录。

  1. $ ls /run/user
  2. 1000 1002 121

使用长文件列表可以发现这些数字的重要性。

  1. $ ls -l
  2. total 0
  3. drwx------ 5 shs shs 120 Jun 16 12:44 1000
  4. drwx------ 5 dory dory 120 Jun 16 16:14 1002
  5. drwx------ 8 gdm gdm 220 Jun 14 12:18 121

我们看到每个目录与当前登录的用户或显示管理器 gdm 相关。数字代表他们的 UID。每个目录的内容都是运行中的进程所使用的文件。

/run/user 文件只是你在 /run 中找到的一小部分。还有很多其他文件。有一些文件包含了各种系统进程的进程 ID。

  1. $ ls *.pid
  2. acpid.pid atopacctd.pid crond.pid rsyslogd.pid
  3. atd.pid atop.pid gdm3.pid sshd.pid

如下所示,上面列出的 sshd.pid 文件包含 ssh 守护程序(sshd)的进程 ID。

  1. $ cat sshd.pid
  2. 1148
  3. $ ps -ef | grep sshd
  4. root 1148 1 0 Jun14 ? 00:00:00 /usr/sbin/sshd -D <==
  5. root 10784 1148 0 12:44 ? 00:00:00 sshd: shs [priv]
  6. shs 10922 10784 0 12:44 ? 00:00:00 sshd: shs@pts/0
  7. root 18109 1148 0 16:13 ? 00:00:00 sshd: dory [priv]
  8. dory 18232 18109 0 16:14 ? 00:00:00 sshd: dory@pts/1
  9. shs 19276 10923 0 16:50 pts/0 00:00:00 grep --color=auto sshd

/run 中的某些子目录只能使用 root 权限访问,例如 /run/sudo。例如,以 root 身份运行我们可以看到一些与真实或尝试使用 sudo 相关的文件:

  1. /run/sudo/ts# ls -l
  2. total 8
  3. -rw------- 1 root dory 112 Jun 16 16:37 dory
  4. -rw------- 1 root shs 168 Jun 17 08:33 shs

为了与 /run 的变化保持一致,一些运行时数据的旧位置现在是符号链接。/var/run 现在是指向 /run 的指针,/var/lock 指向 /run/lock 的指针,可以保证旧的引用按预期工作。

  1. $ ls -l /var
  2. total 52
  3. drwxr-xr-x 2 root root 4096 Jun 17 07:36 backups
  4. drwxr-xr-x 19 root root 4096 Apr 18 13:46 cache
  5. drwxrwsrwt 2 root whoopsie 4096 Jun 13 07:39 crash
  6. drwxr-xr-x 75 root root 4096 Jun 9 15:14 lib
  7. drwxrwsr-x 2 root staff 4096 Oct 16 2017 local
  8. lrwxrwxrwx 1 root root 9 May 14 2018 lock -> /run/lock
  9. drwxrwxr-x 17 root syslog 4096 Jun 17 00:00 log
  10. drwxrwsrwt 2 root mail 4096 Jun 13 12:10 mail
  11. drwxrwsrwt 2 root whoopsie 4096 Jan 5 2018 metrics
  12. drwxr-xr-x 2 root root 4096 Jan 5 2018 opt
  13. lrwxrwxrwx 1 root root 4 May 14 2018 run -> /run
  14. drwxr-xr-x 9 root root 4096 Jun 16 2018 snap
  15. drwxr-xr-x 9 root root 4096 Jun 9 15:14 spool
  16. drwxrwxrwt 8 root root 4096 Jun 17 00:00 tmp
  17. drwxr-xr-x 3 root root 4096 Jan 19 12:14 www

虽然技术上的变化很小,但转换到使用 /run 只是为了在 Linux 文件系统中更好地组织运行时数据。

责任编辑:庞桂玉 来源: Linux中国
相关推荐

2020-08-11 09:47:30

JS闭包代码

2009-07-03 18:59:02

2010-06-13 13:43:30

Linux超级计算机

2016-07-05 10:53:56

2009-01-03 11:07:06

AJAXASP.NET.NET

2019-07-29 19:30:54

Linux命令ls命令

2019-08-15 16:00:21

Linux内核Kconfig

2020-03-11 16:40:59

Linux内核代码

2019-10-10 08:42:37

Linux内核操作系统

2010-03-24 09:25:01

移动数据中心

2021-06-08 08:33:33

Zabbix5.2snmptrap探索运维

2014-08-28 10:18:36

LinuxShebang

2009-08-27 11:43:46

ibmdw云计算

2011-07-22 09:40:39

2019-10-22 08:30:26

LinuxFHS进程

2010-05-25 09:44:03

2017-09-07 12:56:24

Linux系统结构

2015-11-25 09:41:05

数据中心

2011-04-01 09:58:35

Linux 发行版

2011-01-13 09:44:19

Linuxsudo技巧
点赞
收藏

51CTO技术栈公众号