Linux who命令

Linux who命令用于显示系统中有哪些使用者正在上面,显示的资料包含了使用者 ID、使用的终端机、从哪边连上来的、上线时间、呆滞时间、CPU 使用量、动作等等。

使用权限:所有使用者都可使用。

语法

who - [husfV] [user]

参数说明

  • -H 或 --heading:显示各栏位的标题信息列;
  • -i 或 -u 或 --idle:显示闲置时间,若该用户在前一分钟之内有进行任何动作,将标示成"."号,如果该用户已超过24小时没有任何动作,则标示出"old"字符串;
  • -m:此参数的效果和指定"am i"字符串相同;
  • -q 或--count:只显示登入系统的帐号名称和总人数;
  • -s:此参数将忽略不予处理,仅负责解决who指令其他版本的兼容性问题;
  • -w 或-T或--mesg或--message或--writable:显示用户的信息状态栏;
  • --help:在线帮助;
  • --version:显示版本信息。

实例

显示当前登录系统的用户

# who  //显示当前登录系统的用户

root   tty7     2021-08-13 12:12 (:0)

root   pts/0    2021-08-14 17:09 (:0.0)

root   pts/1    2021-08-14 18:51 (192.168.1.17)

root   pts/2    2021-08-14 19:48 (192.168.1.17)

显示标题栏

# who -H

NAME   LINE     TIME       COMMENT

root   tty7     2021-05-13 12:12 (:0)

root   pts/0    2021-05-14 17:09 (:0.0)

root   pts/1    2021-05-14 18:51 (192.168.1.17)

root   pts/2    2021-05-14 19:48 (192.168.1.17)

显示用户登录来源

# who -l -H

NAME   LINE     TIME       IDLE     PID COMMENT

LOGIN  tty4     2021-05-13 12:11        852 id=4

LOGIN  tty5     2021-05-13 12:11        855 id=5

LOGIN  tty2     2021-05-13 12:11        862 id=2

LOGIN  tty3     2021-05-13 12:11        864 id=3

LOGIN  tty6     2021-05-13 12:11        867 id=6

LOGIN  tty1     2021-05-13 12:11       1021 id=1

显示终端属性

# who -T -H

NAME    LINE     TIME       COMMENT

root   + tty7     2021-05-13 12:12 (:0)

root   + pts/0    2021-05-14 17:09 (:0.0)

root   - pts/1    2021-05-14 18:51 (192.168.1.17)

root   - pts/2    2021-05-14 19:48 (192.168.1.17)

只显示当前用户

# who -m -H

NAME   LINE     TIME       COMMENT

root   pts/1    2021-05-14 18:51 (192.168.1.17)

精简模式显示

# who -q

root root root root

# users=4

`who` 是 Linux 系统中用于显示当前登录用户信息的命令,能够列出登录的用户名、终端、登录时间及来源主机等。以下是详细说明: --- ### **基本用法** ```bash who ``` **输出示例**: ``` user1 :0 2023-10-01 09:30 (:0) user2 pts/0 2023-10-01 10:15 (192.168.1.100) user3 pts/1 2023-10-01 11:20 (10.0.0.5) ``` - **字段说明**: 1. **用户名**:登录的用户(如 `user1`)。 2. **终端类型**: - `:0`:本地图形界面(X11)。 - `pts/N`:伪终端(SSH 或远程登录)。 - `ttyN`:本地终端。 3. **登录时间**:日期和时间(如 `2023-10-01 09:30`)。 4. **来源主机**: - 本地登录显示为 `:0` 或空。 - 远程登录显示 IP 或主机名(如 `192.168.1.100`)。 --- ### **常用选项** | 选项 | 作用 | |------|------| | `-a` | 显示所有信息(等同于 `-b -d --login -p -r -t -T -u`) | | `-b` | 显示系统最后启动时间 | | `-H` | 显示列标题(用户名、终端、时间等) | | `-m` | 仅显示当前用户的信息(等同于 `who am i`) | | `-q` | 简化输出(仅显示用户名和登录用户数) | | `-u` | 显示空闲时间(idle)和进程 ID(PID) | **示例**: ```bash who -uH # 带标题显示详细信息 ``` 输出: ``` USER LINE FROM LOGIN@ IDLE JCPU PCPU WHAT user1 :0 :0 09:30 ?xdm? 1:00 0.10s /usr/bin/gnome-shell user2 pts/0 192.168.1.100 10:15 5:00 0.05s 0.05s bash ``` --- ### **高级用法** 1. **查看当前用户信息**: ```bash who -m ``` 或 ```bash who am i ``` 输出示例: ``` user2 pts/0 2023-10-01 10:15 (192.168.1.100) ``` 2. **统计登录用户数**: ```bash who -q ``` 输出: ``` user1 user2 user3 # users=3 ``` 3. **结合 `grep` 过滤特定用户**: ```bash who | grep "user2" ``` 4. **查看系统启动时间**: ```bash who -b ``` 输出: ``` system boot 2023-10-01 09:28 ``` --- ### **与其他命令对比** - **`w`**:显示更详细的信息(如用户正在运行的进程)。 ```bash w ``` - **`last`**:查看历史登录记录(包括重启记录)。 ```bash last ``` - **`users`**:仅列出登录的用户名(去重)。 ```bash users ``` --- ### **底层原理** `who` 通过读取以下系统文件获取信息: 1. **`/var/run/utmp`**:当前登录用户信息。 2. **`/var/log/wtmp`**:历史登录记录(需 `last` 命令查看)。 3. **`/var/log/btmp`**:记录失败的登录尝试(需 `lastb` 命令查看)。 --- ### **常见问题** 1. **为什么 `who` 和 `w` 的输出不同?** - `who` 仅显示基本登录信息,而 `w` 会附加 CPU/内存占用和当前进程。 2. **如何隐藏标题行?** - 默认无标题,若需标题用 `-H`,隐藏标题可过滤: ```bash who | tail -n +2 ``` 3. **远程登录的终端为何显示为 `pts/N`?** - `pts` 表示伪终端,由 SSH 或 Telnet 创建;`tty` 表示物理终端。 4. **如何记录登录信息到日志?** - 系统已自动记录到 `/var/log/wtmp`,可通过 `last` 查看。 --- ### **脚本应用示例** ```bash #!/bin/bash # 检查是否有用户通过 SSH 登录 if who | grep -q "pts"; then echo "检测到远程登录用户:" who | grep "pts" else echo "无远程登录用户。" fi ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值