Linux常用命令学习笔记:w

一、命令简介

w命令是 Linux 系统中用于显示当前登录用户及其活动信息的实用工具。它提供了比 who命令更详细的信息,包括用户正在执行的进程、系统负载、登录时间等,是系统管理员监控用户行为的常用命令。

二、基本语法

w [选项] [用户名]

权限要求:所有用户均可使用,无需特殊权限。 功能特点

  • 显示当前登录用户信息
  • 显示用户正在执行的命令
  • 显示系统运行时间和负载
  • 支持多种输出格式

三、常用选项详解

选项功能说明示例
-h不显示标题栏w -h
-u忽略执行程序名称和CPU时间w -u
-s简洁模式,不显示登录时间和CPU时间w -s
-f切换显示FROM字段(登录来源)w -f
-V显示版本信息w -V
[用户名]仅显示指定用户的信息w root

四、输出字段解释

w 命令的输出包含以下重要字段:

字段说明
USER登录用户名
TTY终端类型(tty:物理终端,pts:伪终端)
FROM登录来源IP地址(本地登录显示:0)
LOGIN@用户登录时间
IDLE用户空闲时间(.表示当前活跃)
JCPU该终端所有进程占用的CPU时间
PCPU当前进程占用的CPU时间
WHAT用户当前正在执行的命令

五、实际应用示例

5.1 显示所有用户信息(默认)

w

输出示例:

20:15:30 up 2:30,  3 users,  load average: 0.15, 0.21, 0.18
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
alice    tty1     :0               18:45    1:30m  0.10s  0.02s bash
bob      pts/0    192.168.1.100    19:20    0.00s  0.05s  0.01s w
charlie  pts/1    192.168.1.101    19:45    5:00   0.03s  0.01s vim file.txt

5.2 简洁模式显示

w -s

输出示例:

20:16:15 up 2:31,  3 users,  load average: 0.12, 0.19, 0.17
USER     TTY      FROM              IDLE   WHAT
alice    tty1     :0                1:31m  bash
bob      pts/0    192.168.1.100     0.00s  w -s
charlie  pts/1    192.168.1.101     5:15   vim file.txt

5.3 隐藏标题栏

w -h

输出示例:

alice    tty1     :0               18:45    1:32m  0.10s  0.02s bash
bob      pts/0    192.168.1.100    19:20    0.00s  0.05s  0.01s w -h
charlie  pts/1    192.168.1.101    19:45    5:20   0.03s  0.01s vim file.txt

5.4 隐藏登录来源

w -f

切换显示/隐藏 FROM 字段(登录来源IP)。

5.5 查看指定用户

w alice

仅显示用户 alice 的信息。

六、系统管理员实用技巧

6.1 监控用户活动

# 实时监控用户活动(每2秒刷新)
watch -n 2 w

# 监控特定用户
watch -n 2 "w | grep alice"

6.2 检测异常登录

# 检查来自异常IP的登录
w | grep -v "192.168.1." | grep -v ":0"

# 检查长时间空闲的用户
w | awk '$5 ~ /^[0-9]+[dm]/ {print "长时间空闲用户:", $1, "空闲时间:", $5}'

6.3 生成活动报告

# 生成当前用户活动快照
w -s > user_activity_$(date +%Y%m%d_%H%M%S).log

# 统计当前登录用户数
w -h | wc -l

七、输出信息解读指南

7.1 系统负载信息

20:15:30 up 2:30,  3 users,  load average: 0.15, 0.21, 0.18
  • 当前时间:20:15:30
  • 运行时间:系统已运行 2小时30分钟
  • 登录用户数:3个用户
  • 系统负载:最近1分钟0.15,5分钟0.21,15分钟0.18

7.2 用户状态解读

  • IDLE字段
    • .:用户当前正在活动
    • 1:30m:空闲1小时30分钟
    • 0.00s:刚刚活动
  • WHAT字段
    • bash:用户正在使用bash shell
    • vim file.txt:用户正在编辑文件
    • -bash:登录shell
    • w:用户正在执行w命令

7.3 终端类型说明

  • tty1-tty6:本地虚拟终端
  • tty7:图形界面终端(通常)
  • pts/0, pts/1:伪终端(SSH或终端模拟器)

八、与相关命令对比

8.1 w vs who

特性w 命令who 命令
详细信息显示进程、CPU时间等仅显示基本登录信息
系统负载显示系统负载平均值不显示系统负载
输出格式表格形式,信息丰富简洁列表形式
使用场景系统监控、性能分析快速查看登录用户

8.2 w vs ps

特性w 命令ps 命令
信息范围仅当前登录用户进程系统所有进程
实时性实时用户活动进程快照
易读性用户友好的表格格式需要指定格式参数
用途用户活动监控进程管理调试

九、脚本编程应用

9.1 自动化监控脚本

#!/bin/bash
# 用户活动监控脚本

LOG_FILE="/var/log/user_activity.log"

echo "=== 用户活动报告 $(date) ===" >> $LOG_FILE
w -s >> $LOG_FILE
echo "=== 报告结束 ===" >> $LOG_FILE

# 发送通知(如有异常)
if w -h | grep -q "192.168.2."; then
    echo "检测到来自外部网络的登录" | mail -s "安全警报" admin@example.com
fi

9.2 资源使用统计

#!/bin/bash
# 统计用户资源使用

echo "当前登录用户资源使用统计:"
w -h | awk '
{
    users[$1]++
    if ($5 != ".") idle_time += 1
    total_users++
}
END {
    print "总用户数:", total_users
    print "唯一用户数:", length(users)
    print "空闲用户数:", idle_time
}'

十、注意事项和最佳实践

10.1 权限管理

  • 普通用户只能看到自己的详细进程信息
  • root用户可以看到所有用户的完整信息
  • 敏感信息(如其他用户执行的命令)可能需要特殊权限

10.2 性能考虑

  • 在负载较高的系统上,频繁执行w命令可能增加系统负担
  • 生产环境中建议使用缓存或减少执行频率

10.3 安全审计

  • w命令输出可用于安全审计和异常检测
  • 建议定期检查登录日志和用户活动
  • 关注来自异常IP地址的登录

10.4 故障排查

当w命令显示异常时:

# 检查系统负载是否正常
uptime

# 检查用户登录记录
last

# 检查进程状态
ps aux

十一、总结

w命令是 Linux 系统管理中的重要工具,它提供了丰富的用户活动信息,帮助管理员:

  1. 实时监控:了解当前系统用户活动状态
  2. 性能分析:通过系统负载和CPU时间分析性能
  3. 安全审计:检测异常登录和用户行为
  4. 故障排查:识别资源占用问题和用户进程状态

使用建议

  • 日常监控使用 w -s简洁模式
  • 详细分析使用默认格式或结合其他工具
  • 自动化脚本中可使用 w -h隐藏标题
  • 定期检查用户活动日志,确保系统安全

掌握 w 命令的使用方法,能够显著提升系统管理和监控的效率。


作 者:南烛
链 接:https://www.itnotes.top/archives/675
来 源:IT笔记
文章版权归作者所有,转载请注明出处!


上一篇
下一篇