xargs 不与 lsof 一起使用

Ros*_*one 3 macos lsof xargs

当我运行时pgrep vim | xargs echo,它打印93868 91234

当我运行时lsof -p 91234,它打印:

COMMAND   PID USER   FD   TYPE DEVICE  SIZE/OFF    NODE NAME
vim     91234 rose  cwd    DIR    1,2      1326 1186863 /Users/rose/spotapi/spotapi/models
vim     91234 rose  txt    REG    1,2   1629296   12231 /usr/bin/vim
vim     91234 rose  txt    REG    1,2   2704416  294199 /System/Library/Frameworks/Python.framework/Versions/2.7/Python
Run Code Online (Sandbox Code Playgroud)

那么为什么呢

pgrep vim | xargs lsof -p 
Run Code Online (Sandbox Code Playgroud)

打印

lsof: status error on 91234: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我在 Mac 操作系统上运行。

pad*_*ddy 5

我在我的 Slackware 安装中看到了这一点。如果你运行lsof -p 93868 91234你就会发现问题。原因是xargs如果可以的话,将所有参数推到一个命令行上。您可以使用该-n选项来指定参数的最大数量。

pgrep vim | xargs -n1 lsof -p
Run Code Online (Sandbox Code Playgroud)