たくろぐ!

仕事はエンジニア、心はアーティスト

そのプロセスで利用されているファイルディスクリプタの数をカウントする

ワンライナーとは

複数のコマンドを &&|| で繋げて複雑なコマンドを実行する一行で書かれるものをさす。

ファイルディスクリプタとは

わいもよくわからない。

qiita.com

for i in $(ps aux | grep "[u]nicorn" | awk '{print $2}'); do ls /proc/$i/fd | wc -l; done

ps aux

現在生きているプロセスを表示する。

grep

引数に文字列をとって、その文字列に合致する行を抽出する。

awk

awk 'パターン {アクション}' ファイル名」で対象のファイルでパターンに合致したものをアクションする。

print

標準出力する。

$2

2番目の引数をとる、という説明がされがち?だが、本当の意味は"スペース区切り"で2番目の値をとる。

wc

カウントする。

オプションによって行数、単語数、バイト数などをカウントできる。

このワンライナーunicornというプロセス名を持つPID(プロセスのID)をあるだけとってきてファイルディスクリプタがいくつあるかをカウントする、という意味になる。

もっと言うと、現在生きているプロセスを表示し、そのなかでunicornというプロセス名のプロセスの2番目の値(これがPID)を全て抽出し、/proc/$PID/fdの部分に入れてディレクトリ表示し、その行数をカウントする、みたいな意味。

oishi-kenko.hatenablog.com

参考にした

qiita.com