当前位置:首页 > Linux > 正文

如何写linux系统who命令

Linux系统中,写 who命令可直接输入 who并回车,显示当前登录用户信息;也可用不同参数如 -H显标题、 -q只显账号数等按需查看。

Linux系统中,who命令是一个基础且强大的工具,用于显示当前登录系统的用户信息,以下是关于如何编写和使用该命令的详细说明:

基本语法与功能

who命令的核心作用是读取/var/run/utmp文件(存储用户登录记录),并格式化输出结果,其最简形式为直接输入who,此时会列出所有已登录用户的用户名、终端类型、登录时间及来源主机等信息。

user1 pts/0 2023-10-27 10:30 (:0.0)
user2 tty1 2023-10-27 09:00

上述输出表明两个用户的登录状态,包括他们使用的虚拟控制台或伪终端设备,这种默认视图适合快速查看系统活跃会话概览。

如何写linux系统who命令  第1张

常用选项详解

选项 作用描述 示例输出效果
-H, --heading (如NAME/LINE/TIME等),提升可读性 NAME LINE TIME COMMENT
-q, --count 仅显示总登录用户数和账号列表,简化监控需求 root root root # users=3
-u, -i 展示每个用户的空闲时长:短时间内活跃标记为“.”,超24小时无操作则显示“old” user1 + pts/0 ... (old)
-r 查询当前系统运行级别(如多用户模式对应数字3) run-level 3 2024-10-06 13:10
-m 等同于输入am i,专门过滤出当前执行此命令的用户会话 root pts/1 2024-10-06 13:47(192.168.3.241)
-T, -w 标注消息状态(+表示可接收消息,-代表禁止) root + tty7 ...
-b 显示系统最后一次启动的时间戳 system boot 2023-10-24 09:00
-p 列出由init进程衍生的所有活动子进程 cron . Jun 8 04:15 old 4809

这些选项可通过组合使用实现复杂场景下的精准查询。who -H -u既能保留易读的表头,又能获取用户闲置细节。

典型应用场景

  1. 快速排查异常会话:当服务器出现性能瓶颈时,管理员可通过who -u定位长时间空闲却占用资源的账户,及时终止无效连接;
  2. 自动化脚本适配:在Shell脚本中嵌入whoami判断当前用户身份,根据角色动态调整配置参数,增强程序健壮性;
  3. 安全审计追踪:结合管道符与文本处理工具(如grep/awk),可筛选特定IP段的外部访问记录,例如who | grep '192.168'能高亮内网设备的登录事件;
  4. 历史日志分析:指定归档文件作为数据源(如who /var/log/wtmp),可追溯过往的登录注销记录,辅助事件回溯。

进阶技巧与生态整合

  1. 跨命令协作:将who的输出导入到其他工具进行二次加工,例如使用who | sort -k3按登录时间排序会话,或通过who > userlist.txt保存实时快照;
  2. 手册深度挖掘:执行man who获取完整参数文档,探索未公开的隐藏功能,Linux手册页通常包含版本差异说明和注意事项;
  3. 系统级联监控:在Ansible等运维平台中调用who模块,批量采集多节点的用户分布数据,构建集中化管理看板。

注意事项与最佳实践

  1. 权限控制:普通用户只能查看自身会话,而root有权访问全体信息,若遇到权限不足提示,需用sudo提权执行;
  2. 时效性局限:该命令仅反映瞬时状态,无法捕获历史行为,如需长期跟踪,应配置日志转储机制;
  3. 字段解析规范:理解输出中的特殊符号含义(如括号内的主机名、方括号里的PID),有助于准确解读数据背后的业务逻辑。

以下是两个常见问题及其解答:

Q1: 如果发现陌生用户在线,如何安全地结束其会话?

A: 先用who确认该用户的TTY设备名(如pts/5),然后使用pkill -kill -t pts/5强制终止对应终端上的进程,建议优先尝试礼貌性通知(如发送SIGHUP信号),无效后再采取强硬措施。

Q2: whow命令有什么区别?

A: w除了提供who的全部功能外,还会显示CPU负载、进程详情等扩展信息,更适合深度调优;而who专注于简洁的用户会话展示,性能开销更低,可根据需求选择合适工具。

who命令看似简单却蕴含丰富的系统监控能力,通过灵活运用其选项参数,并与其他Linux工具协同工作,可以显著提升

0