探索 Linux 上的 /run

Sandra Henry-stocker發表於2019-06-23

Linux 系統在執行時資料方面的工作方式發生了微小但重大的變化。

如果你沒有密切關注,你可能沒有注意到 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中國 榮譽推出

探索 Linux 上的 /run

訂閱“Linux 中國”官方小程式來檢視

相關文章