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: shs@pts/0 root 18109 1148 0 16:13 ? 00:00:00 sshd: dory [priv] dory 18232 18109 0 16:14 ? 00:00:00 sshd: dory@pts/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中國 榮譽推出