我有这样的进程正在运行
me 26175 1.7 2.5 1483984 100148 tty2 Sl+ 12:49 0:04 /snap/electronic-wechat/7/dist/electronic-wechat-linux-x64/electronic-wechat
me 26237 0.0 0.7 311516 29176 tty2 S+ 12:49 0:00 /snap/electronic-wechat/7/dist/electronic-wechat-linux-x64/electronic-wechat --type=zygote --no-sandbox
me 26276 0.2 2.0 550496 81800 tty2 Sl+ 12:49 0:00 /snap/electronic-wechat/7/dist/electronic-wechat-linux-x64/electronic-wechat --type=gpu-process --channel=26175.0.1924433599 --mojo-application-channel-token=3E65B226573BBE452FCCE4212BC242ED --no-sandbox --window-depth=24 --x11-visual-id=33 --supports-dual-gpus=false --gpu-driver-bug-workarounds=5,18,56 --gpu-vendor-id=0x0000 --gpu-device-id=0x0000 --gpu-driver-vendor --gpu-driver-version --gpu-driver-date --v8-natives-passed-by-fd --v8-snapshot-passed-by-fd
me 26284 0.2 3.8 1085556 150812 tty2 Sl+ 12:49 0:00 /snap/electronic-wechat/7/dist/electronic-wechat-linux-x64/electronic-wechat --type=renderer --no-sandbox --primordial-pipe-token=85EEA61A3C800C4096858B6AE571B4EB --lang=en-US --node-integration=true --enable-pinch --num-raster-threads=2 --content-image-texture-target=3553,3553,3553,3553,3553,3553,3553,3553,3553,3553,3553,3553,3553,3553,3553 --video-image-texture-target=3553,3553,3553,3553,3553,3553,3553,3553,3553,3553,3553,3553,3553,3553,3553 --disable-accelerated-video-decode --mojo-channel-token=F13ADFBA9E2E351C09B10692D10BCFBE --mojo-application-channel-token=85EEA61A3C800C4096858B6AE571B4EB --channel=26175.1.78915562 --v8-natives-passed-by-fd --v8-snapshot-passed-by-fd
我希望使用cut
而不是像 gwak 这样的高级工具来获取列 pid
ps -aux | grep wechat | sed "s/$USER/me/g" | cut -f 2 | head -n 4
me 26175 1.2 2.5 1483984 100220 tty2 Sl+ 12:49 0:05 /snap/electronic-wechat/7/dist/electronic-wechat-linux-x64/electronic-wechat
me 26237 0.0 0.7 311516 29176 tty2 S+ 12:49 0:00 /snap/electronic-wechat/7/dist/electronic-wechat-linux-x64/electronic-wechat --type=zygote --no-sandbox
me 26276 0.1 2.0 550496 81800 tty2 Sl+ 12:49 0:00 /snap/electronic-wechat/7/dist/electronic-wechat-linux-x64/electronic-wechat --type=gpu-process --channel=26175.0.1924433599 --mojo-application-channel-token=3E65B226573BBE452FCCE4212BC242ED --no-sandbox --window-depth=24 --x11-visual-id=33 --supports-dual-gpus=false --gpu-driver-bug-workarounds=5,18,56 --gpu-vendor-id=0x0000 --gpu-device-id=0x0000 --gpu-driver-vendor --gpu-driver-version --gpu-driver-date --v8-natives-passed-by-fd --v8-snapshot-passed-by-fd
me 26284 0.1 3.8 1085556 150812 tty2 Sl+ 12:49 0:00 /snap/electronic-wechat/7/dist/electronic-wechat-linux-x64/electronic-wechat --type=renderer --no-sandbox --primordial-pipe-token=85EEA61A3C800C4096858B6AE571B4EB --lang=en-US --node-integration=true --enable-pinch --num-raster-threads=2 --content-image-texture-target=3553,3553,3553,3553,3553,3553,3553,3553,3553,3553,3553,3553,3553,3553,3553 --video-image-texture-target=3553,3553,3553,3553,3553,3553,3553,3553,3553,3553,3553,3553,3553,3553,3553 --disable-accelerated-video-decode --mojo-channel-token=F13ADFBA9E2E351C09B10692D10BCFBE --mojo-application-channel-token=85EEA61A3C800C4096858B6AE571B4EB --channel=26175.1.78915562 --v8-natives-passed-by-fd --v8-snapshot-passed-by-fd
它得出的结论是输出没有由制表符分隔,然后尝试使用空格
me@host:~$ ps -aux | grep wechat | sed "s/$USER/me/g" | cut -d ' ' -f 2 | head -n 4
me@host:~$
但是得到大量的空间,并且 pid 神秘地位于字段 4
me@host:~$ ps -aux | grep wechat | sed "s/$USER/me/g" | cut -d ' ' -f 4 | head -n 4
26175
26237
26276
26284
me@host~$
我在这里很困惑,我怎么能在没有“反复试验”的情况下决定切割哪个领域?
您不必使用
cut
或根本不需要awk
。grep
也不建议与它一起使用,ps
因为未正确创建grep
的查询也会将其自身包含在输出中。pgrep
如果您只对 PID 感兴趣,实用程序可以完成这项工作。如果您对其他信息感兴趣,实用程序接受它应该在选项
ps
中输出的列列表。是一个按名称查找进程的实用程序。因此,我个人经常做的是:-o
pgrep
pgrep
实用程序将查找wechat
命令行中任何位置的进程。xargs
将输出(PID)传递给ps
并将它们放置到-p
标志。-I
将指定要使用的令牌以及输出应放置在命令中的位置。还有
--no-header
摆脱列名的选项如果您只想查看
electronic-wechat
命令,您可能只想使用pgrep electronic-wechat
而不使用-f
另请参阅
man ps
,特别是“标准格式说明符”部分,了解您可以传递到的可用列的列表-o
。如果您有兴趣连续观察这些过程,那么您可以考虑使用
top
带有过滤器的命令。您可以通过键设置一个,通过+o查看您设置的那些,并通过键重置过滤器。下面是我设置过滤器后的屏幕截图,该过滤器显示为+Ctrlo+Ctrlo