この質問は以前も明らかに提起された質問であることがわかっており、正確に何を検索しているのかよく分からないので重複した質問であることをご了承ください。
前のコマンドで入力をパイプするときに変数を正しい位置に「プール」するにはどうすればよいですか? PIDを見つけて、そのPIDに関連する開いているファイルを見つけて、ファイルに絞り込み、そのファイルに対してコマンドを実行しようとしています。これはコマンドです:
ps x | grep IINA | grep -v grep | awk '{print $1}'
さて、これは私にPIDを与えます。いいですね。今私はlsof -p
そのPIDが欲しいが、単にこれを行うことはできませんps x | grep IINA | grep -v grep | awk '{print $1}' | lsof -p
。
そうでなければps x | grep IINA | grep -v grep | lsof -p 'awk '{print $1}''
(間違った逆引用符をもう一度ご了承ください)、私は何をしたいのですか?
答え1
このlsof
ユーティリティには、標準入力ではなくコマンドラインにPIDが必要です。
あなたはそれを使用することができます
lsof -p "$( pgrep IINA )"
これは引数として実行され、その出力はコマンド置換を使用してオプションのオプション引数として渡されpgrep
ます。IINA
lsof
-p
IINA
コマンド名ではなく、プロセスを開始するために使用されるコマンドラインの一部である場合、-f
フラグをpgrep
。
複数のヒットを取得した場合、実装がそれをサポートしている場合は(最も最近開始された一致プロセスのインポート)、または(最も古い一致プロセスのインポート)を使用するか、次のいずれかをpgrep
使用できます。-n
-o
pgrep
lsof -p "$( pgrep IINA | tr '\n' ',' )"
カンマ区切りのPIDリストを作成しますlsof -p
。