You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从`who -u`输出中提取user-x的PID列?

问题记录

背景

在我的机器上执行who -Hu会得到以下输出:

$ who -Hu
NAME     LINE         TIME             IDLE          PID COMMENT
rpi-first-boot-wizard tty7         1970-01-10 11:44 02:31        1204 (:0)
user-x   tty2         1970-01-07 20:16 00:10        2670
user-x   pts/0        4164607823021491175   .          2756 (192.168.203.57)

问题

需要获取user-x对应的PID列内容,也就是2670和2756。

已尝试方案

  • 查阅who的手册页,未找到提取指定列或隐藏列的选项。
  • 尝试执行命令:who -u | grep user-x | tr -s ' ' | cut -d ' ' -f 5,但该命令仅在时间戳为无空格单一数字的行上有效,遇到含空格的日期格式时解析失败。

需求

希望用简单的Bash命令提取这些PID,优先避免使用编程语言解析;若没有合适的Bash方案,再考虑用编程语言实现。

补充信息

这可能是一个“XY问题”——我的实际需求是将指定用户踢出系统,原本计划把提取到的PID传入kill命令,比如执行who -u | grep user-x | tr -s ' ' | cut -d ' ' -f 5 | xargs kill。该命令之前能正常工作,但遇到带空格的特殊日期格式后就失效了。如果有不依赖who获取正确PID的方法也可以接受。

编辑补充

感谢@jhnc的评论,发现pkill -u user-x可以完美解决踢用户的问题,避开了解析who输出的麻烦。不过保留原问题,因为@markp-fuso的回答提供了原问题的解决方案。


内容的提问来源于stack exchange,提问作者nullromo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 22:06:04