列出我的用户的所有进程名称。
我可以
ps aux | grep username
但输出会像这样:
maythux 18343 0.0 0.1 1070868 34504 ? Sl Jun03 0:07 empathy
maythux 21562 0.0 0.1 703716 32104 ? Sl Jun10 0:00 /usr/bin/python /usr/bin/blueman-applet
maythux 21574 0.0 0.0 53532 2408 ? S Jun10 0:00 /usr/bin/obex-data-server --no-daemon
maythux 25197 0.0 1.0 2199840 258576 ? Sl May27 0:24 remmina
但我只希望输出看起来像:
empathy
blueman-applet
obex-data-serve
remmina
那么最简单的方法是什么?
答案1
您可以使用命令本身轻松完成此操作,ps
无需任何其他工具:
ps -U user-name -o comm=
如果您想要排序并删除重复的条目,您可以这样做:
ps -U user-name -o comm= | sort | uniq
这是我的输出示例:
liferea
mission-control
nacl_helper
nautilus
nm-applet
notify-osd
nxclient.bin
nxnode.bin
obex-data-serve
okular
polkit-gnome-au
答案2
为了完整起见,您还可以使用pgrep
:
pgrep -lU foobar
这将匹配用户的真实用户 ID foobar
。这将显示带有 PID 的输出。
如果您只想要进程名称,也可以删除重复项:
pgrep -lU foobar | cut -d' ' -f2 | sort -u ##Using RUID
pgrep -lu foobar | cut -d' ' -f2 | sort -u ##Using EUID