2008年11月27日

 

psでプロセス毎のCPU使用率、スレッド数、メモリ使用率、物理メモリサイズ、仮想メモリサイズを出力

psでプロセス毎のCPU使用率、スレッド数、メモリ使用率、物理メモリサイズ、仮想メモリサイズを出力

$ ps -p [PID] -o pid,ppid,user,etime,time,pcpu,nlwp,vsz,rss,pmem,args

プロセスのコマンドの文字列でgrepする場合
$ ps -A -o pid,ppid,user,etime,time,pcpu,nlwp,vsz,rss,pmem,args | egrep 'ptn'

監視したいときは以下のようなシェルを組む。

#!bin/sh
PID=$1
INTERVAL=10

while true
do
ps -p ${PID} --no-headers -o pid,ppid,user,etime,time,pcpu,nlwp,vsz,rss,pmem,args
sleep ${INTERVAL}
done

シェルを組むのも面倒な時は、shになってからコマンドラインで実行。

$ sh
$ while true; do ps -p [PID] --no-headers -o pid,ppid,user,etime,time,pcpu,nlwp,vsz,rss,pmem,args;sleep 10; done

ラベル:


 

psをgrepした結果にgrep自身のプロセスを出力させない

psの結果をgrepした結果にgrep自身のプロセスを出力させない方法。
以下、httpdのプロセスを出力させる場合。

# grepの-vオプションを使う
$ ps aux | egrep 'httpd' | egrep -v 'grep'

# 検索文字列に文字クラスを使用してgrepの結果にかからなくする
# ps aux | egrep '[h]ttpd'

ラベル:


2008年11月14日

 

awk 1ライナー 列の抜き出し

空白やタブ等で区切られたテキストデータ列の抜き出しには、cutコマンドやawkやperlの1ライナーが便利です。
以下はawkでの実例

# "aaa bbb ccc"の1列目のみを出力する。
$ echo "aaa bbb ccc" | awk '{ print $1 }'
aaa

# "aaa bbb ccc"の2列目のみを出力する。
$ echo "aaa bbb ccc" | awk '{ print $2 }'
bbb

# "aaa bbb ccc"の1,2列目を:(コロン)区切りで出力する。
$ echo "aaa bbb ccc" | awk '{ print $1,":",$2 }'
aaa : bbb

# "aaa,bbb,ccc",(カンマ区切り)の1列のみを出力する。
$ echo "aaa,bbb,ccc" | awk -F',' '{ print $1 }'
aaa

# ps au の結果の2列目(PID)のみを出力する。
$ ps au | awk '{ print $2 }'
PID
XXXXX
XXXXX
XXXXX

同様のことはPerlの1ライナーでも可能です。
Perlの1ライナーについては以下コンテンツへ
Perl ワンライナー 勉強中。

ラベル:


スポンサードリンク