我在使用who命令时总是看到 pts 和 tty但我从来不明白它们有什么不同?有人可以向我解释一下吗?
我偶然发现了一个提到以下命令的博客。
who mom likes
Run Code Online (Sandbox Code Playgroud)
它似乎相当于
who am i
Run Code Online (Sandbox Code Playgroud)
作者警告永远不要在命令行中输入以下内容(我怀疑他是在开玩笑)
who mom hates
Run Code Online (Sandbox Code Playgroud)
没有关于该mom命令的任何记录。它有什么作用?
在 IEEE Std 1003.1-2008(又名 The Open Group Base Specifications Issue 7,或仅 POSIX 标准)的 2016 版中,该who实用程序的基本原理部分提到了以下内容:
实现不为调用who mil产生任何输出是可以接受的。
谁或什么是“mil”?为什么允许实现不产生任何输出who mil?
请帮我区分pts和tty生成的gui模式。
multi-user.target我这样做了:
sudo systemctl set-default multi-user.target startx切换到gui tty和who,它说:$ tty /dev/pts/0 $谁 debian8 tty1 2017-01-09 20:22 debian8 tty2 2017-01-09 20:23
为什么who不是 this的输出呢?
WHO debian8 tty1 2017-01-09 20:22 debian8 :0 2017-01-09 20:23
我已经运行startx进入gui模式,并tty说pts/0。那么,为什么who输出tty2不:0?

当tty运行时,我们得到的/dev/pts/0。但是看看上面的。w在行输出的 TTY 列中startx说tty2. 为什么6不是 …
在在线命令行平台中,例如 Codecademy 上的一个,当我运行时
for cmd in w who whoami id
do
echo $cmd
$cmd
echo =========================
echo " "
done
Run Code Online (Sandbox Code Playgroud)
我得到
w
00:52:54 up 8 days, 14:10, 0 users, load average: 3.78, 2.98, 2.69
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
=========================
who
=========================
whoami
ccuser
=========================
id
uid=1000(ccuser) gid=1000(ccuser) groups=1000(ccuser)
=========================
Run Code Online (Sandbox Code Playgroud)
注意 onlywhoami和idoutput 的东西。当我在我的电脑上运行同样的东西时,我看到所有命令的结果都相似。
为什么不Codecademy网站为用户显示w和who?这些命令有什么不同?
我可以理解命令who和whoami,但是当我输入时到底发生了什么:
who am i
Run Code Online (Sandbox Code Playgroud)
和
who am
Run Code Online (Sandbox Code Playgroud)
我在 Ubuntu 上,在他们之后没有任何反应!
为什么 Linux / UNIX 不回复错误消息(“未知参数”行中的内容who),或者只回复 的输出who?
who命令的手册页描述是
who - show who is logged on
但是存在一个类似的命令whoami。的手册页描述whoami是
whoami - print effective userid
谁能解释一下这些命令的作用?它们有何不同?
在 RHEL 7.3 服务器中,我试图查找登录用户。我跑了w,它告诉我有两个用户,但它只显示了一个(我自己)的信息;然后我跑了who,将另一个用户显示为(未知)。最后,我运行了lastlog,使用它的输出,我可以匹配 输出中的登录日期和端口,who并找到未知用户实际上是gdm。
$ w
09:33:36 up 4 days, 15:22, 2 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
myusr pts/0 172.16.23.113 09:32 0.00s 0.06s 0.03s w
$ who
(unknown) :0 2017-07-01 18:13 (:0)
myusr pts/0 2017-07-06 09:32 (172.16.23.113)
$ lastlog
Username Port From Latest
...
gdm :0 Sat Jul 1 18:13:23 -0500 2017
...
Run Code Online (Sandbox Code Playgroud)
服务器是一台超微型机器,我不时使用 IPMI2 的 kvm over lan 功能连接到它。但是我不记得像那样连接时发生了什么奇怪的事情。 …
我在以下内容中找到了man who:
-T, -w, --mesg将用户的消息状态添加为 +、- 或 ?
--message与 -T
--writable相同 与 -T 相同
于是抬头一看info who,发现
-w -T --mesg --message --writable在每个登录名后打印一个字符,指示用户的消息状态
+允许“写”消息
-不允许“写”消息
?“找不到终端设备”
问题:什么“消息”,什么样的“消息”是什么意思?
该logname工具变成不可用前一段时间对于许多用户,因为它依赖于一些已被打破故意出于安全考虑,为讨论在这里。在我阅读讨论时,该功能不太可能恢复。
我使用了一段时间的变通方法,但现在我觉得它们开始站不住脚,所以我正在寻找一个合适的长期解决方案,我很惊讶地看到,似乎没有太多.
最常链接到的解决方案在此处提供,但它源自此处,其中还存在一个提示,即通过环境变量提出的解决方案SUDO_USER不可移植。
另一个提议的解决方案是创建一个包含用户名的文件并编写一个 bash 别名或类似的来模拟日志名功能,但我不会称其为合适的替代品,至少因为它假设了对环境的一定程度的可控性至少在最起码的情况下,并不总是可能的,更好说。
who来自此处的解决方案很有趣,但我找不到有关是否存在相关可靠性或可移植性限制的任何信息。
除了这些方法之外,这个领域的空气越来越稀薄,所以我决定在这里提问,希望对这个话题和我的想法有一些新的投入。