Command

資訊來源——指揮誰

  • September 1, 2018

我想知道該命令如何"who"將有關ssh歷史的資訊提取到 Linux 系統中。例如,在我的共享網路工作站上,每個人都可以ssh進入它:

[johny@gandor ~]$ who
johny :0           2018-08-30 06:44 (:0)
johny pts/0        2018-08-30 06:45 (:0.0)
johny pts/1        2018-08-30 06:45 (:0.0)
Keiven pts/2        2018-08-30 19:46 (:50.0)
seman pts/6        2018-08-31 15:15 (:50.0)
johny pts/7        2018-08-31 15:51 (:50.0)
casper pts/8        2018-08-31 16:53 (:50.0)
johny pts/10       2018-09-01 06:25 (:50.0)

我認為這些資訊最初儲存在 Linux 系統文件中的某個位置,並且命令"who"從該文件中讀取該資訊?如果是這樣,該文件在哪裡?

查看誰的手冊頁。例如“如果未指定 FILE,請使用 /var/run/utmp。”

這不是一個文本文件,因此打開vi文件內容的視圖會很差。 od -c /var/run/utmp | more會更好。

如果您執行strace -e open who,您將看到所有who打開的文件。在 Linux 上,這包括/var/run/utmp. utmp不是人類可讀的文件,而是一個結構序列**(**utmp參見 參考資料utmpx(5))。在 FreeBSD 上,who打開/var/run/utx.active.

您還可以在提到預設文件的位置who --helpman 1 who甚至找到此資訊。info who

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