Linux/UNIX:查看特定用户是否登录到服务器

时间:2020-01-09 10:42:22  来源:igfitidea点击:

如何查看我的朋友或者同事是否从命令行登录到相同的Linux或者BSD或者UNIX(AIX,HP-UX,Apple OS X)服务器/工作站?
有各种命令和Shell环境变量设置可通知您有关UNIX之类的朋友在操作系统下的登录活动。

检查朋友或者同事是否已登录

打开命令行终端(选择应用程序>附件>终端),然后执行以下命令:

$ who
$ who -H

输出示例:

NAME     LINE         TIME             COMMENT
Hyman    tty7         2011-04-18 15:14 (:0)
Hyman    pts/2        2011-04-18 22:16 (:0.0)
Hyman    pts/3        2011-04-18 22:17 (:0.0)
foo      pts/4        2011-04-19 00:36 (localhost)
root     pts/0        2011-04-18 13:53 (10.1.3.21)

who命令显示谁在系统上,即显示谁在UNIX系统上登录。
您可以使用UNIX/Linux grep命令过滤掉输出,如下所示:

$ who | grep 'Friend-name-here'

查看tom用户我们是否已登录您的Unix系统,执行:

$ who | grep 'tom'

w命令显示谁已登录以及他们在Linux/UNIX系统上正在做什么。
打开一个终端并输入以下命令:

$ w

输出示例:

14:07:35 up 43 days, 17:44,  1 user,  load average: 0.62, 0.89, 0.90
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
Hyman    tty7     :0               15:14    9:25m 24:00   0.39s gnome-session
Hyman    pts/2    :0.0             22:16    1:42   0.18s  0.00s ssh foo@localhost
Hyman    pts/3    :0.0             22:17    0.00s  0.23s  0.01s w
jasmi    pts/4    localhost        00:36    1:38   0.19s  0.19s vim 
root     pts/0    10.1.3.21        13:53    0.00s  0.05s  0.00s w

关于TCSH watch变量的说明

TCSH(C Shell)下的watch变量存储用户/终端对的列表,以监视登录和注销。
语法如下:

set watch="user1 any user2 any"
set watch="5 user1 any user2 any"

在此示例中,您正在从任何终端监视tom用户:

set watch="tom any"

要仅从pts0终端观看用户tom,请执行:

set watch="tom pts0"

要监视所有用户和终端,请执行:

set watch="any any"

或者

set watch = (jerry pts1 any console Hyman any)

默认情况下,每隔10分钟检查一次登录和注销,但是可以将监视的第一个字设置为一个数字,以便每隔几分钟检查一次。
在此示例中,每五分钟报告一次所有(任何)登录和注销信息:

set watch = (5 any any)

log命令可以立即显示报告:

log

输出示例:

root has logged on pts/0 from 10.1.3.21.
Hyman has logged on pts/1 from 10.1.3.23.

您可以使用who变量设置观看消息的格式字符串:

set watch = ( %n )
log

输出示例:

root
Hyman

您可以使用以下格式字符串:

  • %n显示用户名。
  • %a显示已登录或者已退出的消息。
  • %l显示终端名称。
  • %M或者%m显示FQDN(主机名)或者本地登录名。

设置为"%n"的默认用户的%a来自%m。

shell别名

当将Bash或者Ksh用作简单命令的第一个单词时,Bash或者Ksh或者任何标准的UNIX Shell别名都允许将字符串替换为单词。
即,您可以创建简单命令的快捷方式。
首先,在~/.who文件中创建要监视的朋友列表:

cat ~/.who
tom
spike 
butch 
tuffy

接下来,创建一个名为buddies的别名来监视其登录/注销活动(添加到您的~/.bashrc文件中),执行:

alias buddies="who | grep -f ~/.who"

或者

alias buddies="w | grep -f ~/.who"

注销并再次登录后,伙伴别名将充当命令。
或者,只需获取~/.bashrc文件的源,执行:

$ source ~/.bashrc
$ buddies