2

実行する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

ではなぜ

pgrep vim | xargs lsof -p 

印刷する

lsof: status error on 91234: No such file or directory

私はMac OSで実行しています。

4

2 に答える 2

0

または、スペースをカンマに置き換えて、複数の PID を指定できます。

lsof -p `pgrep vim | xargs echo | sed -re 's/ /,/g'`

上記の例では、xargs を使用してすべての pid を echo に渡し、それらを 1 行にまとめてから、スペースをコンマに置き換えます。lsof に対して実行されるコマンドは次のとおりです。

lsof -p 1111,2222

これを行う簡単な方法 (vim などのプロセス名を知っていて、pgrep を必要としない場合):

lsof -p `pidof vim | sed -re 's/ /,/g'`

osx での互換性と可用性について 100% 確信があるわけではありません。これは Fedora / Ubuntu でした。

于 2014-09-30T11:13:21.110 に答える