Linux/UNIX:查看特定用户是否登录到服务器
如何查看我的朋友或者同事是否从命令行登录到相同的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