実行中のPIDとパスとその他を表示するスクリプト作った
修論のために計算するのは良いんだけど,鶏頭故に今動かしてるものが何かわからなくなっちゃうことが頻発したので作りました.
ついでにメモリ使用量とCPU%と経過時間も取得できるようにしました.
コード
正規表現に一部不完全な部分があったので修正
#!/bin/bash getop=0 while getopts "t" opts do case $opts in t) getop=1 ;; esac done procid=`ps xr | awk '!/( ps |PID| top )/ {print $1}'` if [ $getop == 1 ] ; then status=`top -b -n 1` printf "%7s%5s%8s%13s PATH\n" "PID" "Mem" "CPU%" "TIME" else printf "%6s PATH\n" "PID" fi for p in ${procid[@]}; do printf "\033[32m%6d\033[0m: " $p if [ $getop == 1 ] ; then echo "$status" | awk "/^ *$p / {printf(\"%5s%8s%13s \",\$6,\$9,\$11)}" fi ls -l /proc/$p/cwd | awk '{print $11}' done
あれ?はてな記法でスーパープレ記法使ってるのにプレビューでシンタックスハイライトされない….
シェルスクリプトのシンタックスハイライトshはあるけどbash単体のハイライトはないことに気づいた.
表示例
$ pidpath PID PATH 2515: /home/hoge/foo 8030: /home/hoge/bar 8060: /home/hoge/fugafuga 8103: /home/hoge/gonyo
$ pidpath -t PID Mem CPU% TIME PATH 2515: 2.5g 100.0 1711:43 /home/hoge/foo 8030: 484m 100.0 21:38.22 /home/hoge/bar 8060: 484m 100.0 21:34.03 /home/hoge/fugafuga 8103: 484m 100.0 20:59.18 /home/hoge/gonyo