ps -u username 可列出指定用户进程,但普通用户仅能查自身进程;root 或 sudo 用户才可查他人,输出含 PID、TTY、TIME、COMMAND 等字段,不含 %CPU 和 %MEM。

ps -u username 能直接列出进程,但要注意权限和字段含义
普通用户只能看到自己的进程,root 或 sudo 用户才能查别人。执行 ps -u john 会输出该用户的 PID、TTY、TIME 和 COMMAND 等字段,但不包含 CPU 和内存百分比——想看这些得用 ps -eo pid,user,%cpu,%mem,cmd --sort=-%cpu 这类自定义列组合。
常见错误是误用 ps aux | grep username:它匹配的是命令行里含用户名的任意字符串(比如某进程启动参数里写了 john.conf),结果会混入无关项。真正属于该用户的进程反而可能被漏掉。
- 确认用户存在:先运行
id username,避免拼写错误或用户不存在导致空输出 - 区分大小写:Linux 用户名区分大小写,
ps -u John和ps -u john是不同命令 - 字段对齐问题:终端宽度不够时,
ps可能截断 CMD 列,加-w参数(如ps -u john -w)可强制换行显示完整命令
top -u username 是实时监控首选,但退出后不保留历史
top -u john 启动即只显示该用户进程,CPU/内存占用、运行时间等一目了然,适合快速定位资源大户。它底层调用的是内核的 /proc 接口,延迟低、数据准。
注意:如果直接在 top 运行中按 U(大写)再输用户名,效果一样,但容易手误按成小写 u——那会触发“按 UID 排序”,不是筛选。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 刷新间隔:加
-d 2(如top -u john -d 2)可设为每 2 秒刷新一次,避免默认 3 秒太慢 - 权限限制:普通用户执行
top -u root会报错top: unknown user 'root',不是权限问题,而是非 root 用户无法读取其他用户的 /proc/PID/status - 隐藏系统进程:加
-i参数(top -u john -i)可过滤掉僵尸进程和闲置进程,界面更干净
pgrep -u username 更适合脚本调用,但只返回 PID
pgrep -u john 输出纯数字 PID 列表,每行一个,没有多余字段。这是自动化场景(比如杀掉某用户所有进程)最安全的选择,因为不依赖列顺序或空格分隔逻辑。
如果需要同时知道进程名,用 pgrep -u john -l,输出格式是 1234 bash,但要注意:这里的 “bash” 是 comm 字段(进程名),不是完整命令行——比如 /bin/bash -c sleep 100 仍显示为 bash。
- 精确匹配:加
-f(pgrep -u john -f "python.*server")可搜索完整命令行,但性能略降,且需转义正则特殊字符 - 排除自身:脚本里常用
pgrep -u john | grep -v $$避免误杀当前 shell 的 PID - 空结果处理:
pgrep找不到时返回非零退出码,脚本中应检查$?而不是依赖输出内容
htop 按 USER 列过滤最直观,但需额外安装
htop 不是所有发行版默认自带,CentOS/RHEL 得先 sudo yum install htop,Debian/Ubuntu 是 sudo apt install htop。装好后运行 htop,用方向键移到 USER 列,按 / 输入用户名回车,匹配进程高亮且自动居中——这对排查多用户共用服务器时谁占了 CPU 特别有用。
它的底层仍是读取 /proc,但做了缓存优化,滚动和搜索响应比 top 更快。不过要注意:htop 显示的 “USER” 是进程的 real UID,不是 effective UID,所以 setuid 程序(如 sudo 启动的进程)显示的仍是原始启动者,不是 root。
- 排序优先级:高亮后按
F6选 USER 列,再按Enter可按用户分组排序,同用户进程挨在一起 - 树状视图:按
F5切换,能看清某个进程是否 fork 出子进程,比如systemd --user下挂的全部服务 - 颜色干扰:某些终端配色方案会让高亮色和背景色接近,此时按
F2进入 Setup → Colors 调整 “Highlight” 颜色
ps 查细节,top 看动态,pgrep 做自动化,htop 临时救火。真正容易被忽略的是 /proc 权限模型:非 root 用户查别人进程失败时,报错不是 “permission denied”,而是 “no such user”,得先意识到这是权限边界,而不是命令写错了。

















