需用ps -eo user,pid,ppid,%cpu,%mem,vsz,rss,tty,stat,start,time,comm一次性列出所有本地用户及其运行进程,user字段显示实际运行用户;若需按用户分组统计,可加| sort -k1,1 | uniq -c;严格按用户切片则用getent passwd提取UID≥1000用户后循环pgrep -u。

你需要在银河麒麟系统中一次性列出所有本地用户及其各自正在运行的进程,而不是只查某个特定用户或笼统地看全部进程。这种需求常见于系统巡检、多用户环境资源审计或排查跨账户异常行为。
用 ps -eo 查出每个进程的用户和命令全貌
这一步直接输出带用户字段的完整进程快照,不依赖交互刷新,结果稳定可重定向保存。
打开终端,执行:ps -eo user,pid,ppid,%cpu,%mem,vsz,rss,tty,stat,start,time,comm。
该命令强制以“用户”为第一列输出所有进程,【user 字段显示的是实际运行用户,不是有效用户(euid),能真实反映谁启动了这个进程】。注意:如果看到大量 root 用户进程,不要误判为异常——系统服务、守护进程默认以 root 运行。
若需按用户分组归并查看,可追加 | sort -k1,1 | uniq -c,但此时会丢失单个进程细节,仅适合快速统计各用户进程数。
用 pgrep -u 配合循环遍历所有用户
当你需要严格按用户维度切片、逐个列出其全部 PID 和进程名时,这个方法最干净,且天然排除系统伪用户(如 daemon、sys)。
方法一:先获取所有普通用户名列表,再对每个用户调用 pgrep
第一步:提取 UID ≥ 1000 的用户名:getent passwd | awk -F: '$3 >= 1000 {print $1}' > /tmp/users.txt。
第二步:循环查每个用户的进程:while read u; do echo "== $u =="; pgrep -u "$u" -l; done 。
第三步:清理临时文件:rm /tmp/users.txt。
方法二:一行命令快速枚举(适合临时查看):for u in $(compgen -u); do echo "$u:"; pgrep -u "$u" -l || echo "(无进程)"; done。这一步操作起来很简单,直接把命令复制粘贴进终端回车就行,【compgen -u 只返回 shell 已知的登录用户,不会列出 nologin 或 false shell 用户】。
用 top 动态筛选并锁定用户视图
当你要实时观察某几个活跃用户的进程行为,比如教学演示或现场调试,top 的交互式过滤比静态命令更直观。
启动 top 后,按大写 U 键,输入一个用户名(例如 zhangsan),回车确认。
界面立即切换为仅显示该用户所有进程,并持续每3秒刷新。若想换用户,再次按 U 键重新输入即可。
注意:top 不支持一次输入多个用户名,也无法导出纯文本;若需长期记录,必须配合 top -b -n1 -u 用户名 使用批处理模式。
用 htop 搜索高亮并导出用户进程
htop 是唯一支持鼠标点击列头排序、搜索框全局匹配、且能直接导出当前视图为文本的终端工具,适合需要留存证据或进一步分析的场景。
确保已安装 htop:sudo apt install htop(桌面版)或 sudo yum install htop(服务器版)。
运行 htop,用方向键移动光标到 USER 列,按下 / 键,输入目标用户名,回车。
匹配进程自动高亮并滚动至可视区域。此时按 F2 → Setup → Columns,勾选 “USER” 和 “COMMAND”,取消其他冗余列,让输出更聚焦。
按 F9 可将当前筛选后的全部进程(含用户、PID、命令)复制到剪贴板,粘贴到编辑器中即完成导出。

















