GNU/Linux >> Linux の 問題 >  >> Linux

最大のファイル記述子を持つプロセスを見つける方法は?

このforの何が問題になっていますか ループ?ファイル記述子の最大数を持つプロセスを見つけようとしています。 forの最初のコマンド ループps aux | awk '{print $2}' プロセスIDのみを出力します。最初のエラーlsof: illegal process ID: PIDを知っています 出力の1行目がPIDであるため、そこにあります 、しかし、ループは残りの行で正常に機能するべきではありませんか?

[[email protected] ~]# for i in `ps aux | awk '{print $2}'` ; do `lsof -p $i | wc -l` ; done
lsof: illegal process ID: PID
lsof 4.82
 latest revision: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/
 latest FAQ: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/FAQ
 latest man page: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/lsof_man
 usage: [-?abhlnNoOPRtUvVX] [+|-c c] [+|-d s] [+D D] [+|-f[gG]] [+|-e s]
 [-F [f]] [-g [s]] [-i [i]] [+|-L [l]] [+m [m]] [+|-M] [-o [o]] [-p s]
[+|-r [t]] [-s [p:s]] [-S [t]] [-T [t]] [-u s] [+|-w] [-x [fl]] [--] [names]
Use the ``-h'' option to get more help information.
-bash: 0: command not found
-bash: 22: command not found
-bash: 4: command not found
-bash: 4: command not found
-bash: 4: command not found
-bash: 4: command not found
^C
[[email protected] ~]#

wc -lの出力を実行するのはなぜですか ループに戻る代わりに?

または、最大のファイル記述子を持つプロセスを見つける別の方法はありますか?

承認された回答:

問題は、do ... doneのバックティックです。 セクション。

シェルスクリプトを作成する場合、ブロックをカプセル化する必要はありません(if; then ... fiwhile; do ... done 、など)バックティックで。そうすることで、シェルはバックティックの内容を評価し、その内容を実行します。そのため、バックティックは数値(開いているファイルの数)を返し、その数値を実行しようとすると、command not foundになります。 。

したがって、必要なもの:

for i in `ps aux | awk '{print $2}'` ; do lsof -p $i | wc -l ; done

Linux
  1. 最大スタック サイズを確認するにはどうすればよいですか?

  2. grep コマンドを使用して Linux で name=php.ini のファイルを検索する方法

  3. 特定のプロセスの .pid ファイルを見つける方法

  1. findコマンドを使用してLinux上のファイルとディレクトリを検索します

  2. Linuxで重複ファイルを見つける方法は? fdupesコマンドのヘルプがここにあります!

  3. 出力をファイルに追加する方法は?

  1. tr コマンド - 文字列 \n を実際の改行 (\n) に置き換える方法

  2. デフォルトのファイルマネージャを見つける方法は?

  3. 「tar」コマンドと「find」コマンドを組み合わせる方法