在Ubuntu 14.04系统中,who
有以下输出:
user1 :0 2016-05-02 14:49 (:0)
user1 pts/4 2016-05-02 15:10 (:0)
所以显然只是pts/4
使用了。但是,例如,sudo fuser /dev/pts/1
产生输出2573
,即cupsd
。因此,该终端也被进程使用。
为了使用终端,必须登录。user1
已登录;
cups
是否也进行登录等流程?- 如果是,普通用户登录和普通用户登录有什么区别?过程登录?它没有出现在
who
.
答案1
任何程序都可以分配伪终端,它不必涉及登录。它只是进程间通信的另一种形式,如果应用程序需要模拟终端,这非常有用。
一个例子是Expect
程序。它在生成程序时分配一个伪终端,以便该程序就像由用户交互运行一样。
至于显示在who
输出中,需要将程序设置为 UIDroot
或设置为 GID 才能utmp
更新/var/run/utmp
列出哪个用户登录到每个终端的文件。这通常仅适用于创建交互式登录的程序,例如login
xterm` gnome-terminal, or
。