我想知道该命令如何将历史"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"
从该文件中读取该信息?如果是这样,该文件位于哪里?
答案1
如果运行strace -e open who
,您将看到所有who
打开的文件。在 Linux 上,这包括/var/run/utmp
.utmp
是不是它是一个人类可读的文件,而是一个utmp
结构序列(请参阅 参考资料utmpx(5)
)。在 FreeBSD 上,who
打开/var/run/utx.active
.
您还可以在who --help
,man 1 who
甚至info who
提到默认文件的地方找到此信息。
答案2
看一下 who 的手册页。例如“如果未指定 FILE,则使用 /var/run/utmp。”
这不是一个文本文件,因此打开时vi
将无法看到文件内容。 od -c /var/run/utmp | more
会服务得更好。