Linux

~/.gnupg 目錄中以 .#lk0xb 開頭的文件 - 它們是什麼?

  • November 28, 2015

在 Debian Jessie 系統上:

$ ls -al ~/.gnupg/
total 58684
drwx------  2 username username     4096 Nov 28 20:52 .
drwxr-xr-x 50 username username     4096 Nov 28 19:33 ..
-rw-------  1 username username     9602 Jun 24 22:47 gpg.conf
-rw-r--r--  1 username username       18 Jun 25 21:07 .#lk0xb7f2fa50.hostname.5551
-rw-r--r--  1 username username       18 Aug 19 19:15 .#lk0xb8e9bf48.hostname.32133
-rw-r--r--  1 username username       18 Aug 19 19:15 .#lk0xb8e9dc48.hostname.32133
-rw-r--r--  1 username username       18 Nov 28 20:52 .#lk0xb9387478.hostname.24497
-rw-------  1 username username 30018875 Nov 18 21:49 pubring.gpg
-rw-------  1 username username 30018875 Nov 18 20:54 pubring.gpg~
-rw-------  1 username username      600 Jun 21 21:34 random_seed
-rw-------  1 username username     4890 May  7  2015 secring.gpg
-rw-------  1 username username     1440 Nov 18 18:50 trustdb.gpg

我已將實際使用者名替換為username,將實際主機名替換為hostname.

名稱開頭的文件的來源/目的是.#lk0xb什麼?

它們是(正如“lk”所暗示的那樣)鎖定文件。gnupg 來源中的評論說

FILE_TO_LOCK此函式在與使用該名稱和“.lock”後綴的同一目錄中創建一個鎖定文件 。請注意,在 POSIX 系統上,臨時文件*“.#lk..pid$$ .threadid $$*用來。

並且還聲明有一個清理功能(刪除過時的鎖)。您會看到清理功能失敗的剩餘鎖定文件。

pidthreadid與程式碼中較早的註釋不匹配(似乎註釋沒有更新)。使文件名看起來與註釋不同的實際程式碼(引自 gnupg-1.4.19):

 snprintf (h->tname, tnamelen, "%.*s/.#lk%p.", dirpartlen, dirpart, h );
 h->nodename_off = strlen (h->tname);
 snprintf (h->tname+h->nodename_off, tnamelen - h->nodename_off,
          "%s.%d", nodename, (int)getpid ());

但當然,程式碼比註釋更貼切。

引用自:https://unix.stackexchange.com/questions/246121