Linux系统中如何用who命令

发布时间:2022-01-24 10:52:14 作者:kk
来源:亿速云 阅读:218
# Linux系统中如何用who命令

## 一、who命令概述

`who`命令是Linux系统中一个基础但强大的实用工具,用于显示当前登录系统的用户信息。作为系统管理员和普通用户常用的命令之一,它能够快速提供用户会话的详细信息,包括登录用户名、终端设备、登录时间以及来源IP地址(如果适用)等。

### 1.1 命令基本功能
- 显示当前登录用户列表
- 查看用户登录时间
- 识别用户使用的终端设备
- 显示系统启动时间(特定选项)

### 1.2 命令特点
- 轻量级,执行速度快
- 无需特殊权限即可运行
- 信息直接来源于/var/run/utmp文件
- 支持多种格式化输出选项

## 二、基本语法与常用选项

### 2.1 基本命令格式
```bash
who [选项] [文件]

2.2 常用选项说明

选项 功能描述
-a 显示所有信息(相当于-b -d –login -p -r -t -T -u)
-b 显示系统最近启动时间
-d 显示已退出的进程
-H 显示列标题
-q 快速模式,只显示用户名和用户数
-r 显示运行级别
-s 简略显示(默认选项)
-u 显示空闲时间
-T 显示用户消息状态(+:允许消息;-:禁止消息;?: 无法确定终端)

三、实际应用示例

3.1 查看当前登录用户(基础用法)

who

典型输出:

user1   pts/0        2023-08-15 09:30 (192.168.1.100)
user2   tty2         2023-08-15 10:15 (:0)

3.2 显示详细头部信息

who -H

输出示例:

NAME     LINE         TIME             COMMENT
user1    pts/0        2023-08-15 09:30 (192.168.1.100)

3.3 查看系统启动时间

who -b

输出:

         system boot  2023-08-15 08:30

3.4 显示完整信息

who -a

输出包含: - 系统启动时间 - 运行级别变化 - 用户登录记录 - 死进程信息

四、高级用法与组合技巧

4.1 统计登录用户数

who -q

输出:

user1 user2
# users=2

4.2 检查特定终端状态

who -T

输出中消息状态指示:

user1   + pts/0        2023-08-15 09:30 (192.168.1.100)

4.3 结合其他命令使用

who | wc -l   # 统计当前登录用户数
who | grep pts/0   # 查找特定终端的登录信息

五、输出字段详解

5.1 标准输出格式

[用户名] [终端线路] [登录时间] [远程主机名/IP]

5.2 各字段含义

  1. 用户名:登录系统的用户账户名
  2. 终端线路
    • ttyX:物理终端
    • pts/X:伪终端(SSH/Xshell等远程连接)
  3. 登录时间:格式为”YYYY-MM-DD HH:MM”
  4. 远程主机
    • 本地登录显示:0或空
    • 远程登录显示IP或主机名

六、相关文件解析

6.1 utmp文件

6.2 wtmp文件

6.3 btmp文件

七、常见问题解决

7.1 无输出或输出异常

可能原因: - utmp文件损坏 - 权限问题(需检查/var/run/utmp权限)

解决方案:

sudo touch /var/run/utmp
sudo chmod 644 /var/run/utmp

7.2 显示”unknown”用户

原因分析: - 用户会话异常终止 - 终端设备未正确释放

解决方法:

ps -ft <终端名>  # 查找相关进程
kill -9 <PID>    # 终止残留进程

八、安全相关应用

8.1 监控异常登录

who -u | awk '{if($5 > 24:00) print $0}'  # 检测长时间空闲会话

8.2 登录审计脚本示例

#!/bin/bash
LOG_FILE="/var/log/user_audit.log"
echo "$(date) - Current users:" >> $LOG_FILE
who -a >> $LOG_FILE

九、与其他命令对比

9.1 who vs w

9.2 who vs users

9.3 who vs last

十、总结

who命令作为Linux用户管理的基础工具,虽然简单但功能实用。通过掌握其各种选项和组合用法,可以有效地监控系统登录状态、进行基本的系统审计以及排查用户会话问题。建议系统管理员将who命令纳入日常维护工具箱,结合其他命令如wlast等,构建完整的用户会话监控方案。

注意:不同Linux发行版的who命令可能有细微差别,建议通过man who查看具体系统的手册页获取最准确的信息。 “`

这篇文章共计约1500字,采用Markdown格式编写,包含: - 多级标题结构 - 代码块示例 - 表格展示 - 有序/无序列表 - 强调文本 - 实际命令示例 - 问题解决方案 - 相关命令对比等内容

推荐阅读:
  1. who -r 用于查看linux系统的启动级别。
  2. 如如何使用journalctl命令?

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

linux

上一篇:Linux系统安装crossove

下一篇:Linux系统如何安装软件

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》