shellの最近のブログ記事
AIXでアプリがこけるとTCP/IPソケットが"FIN_WAIT_2"なって自然にタイムアウトするまで消えない事が有ります。
これはソケット通信していたアプリが正常にCLOSEできなくて起こる現象ですが、AIXのデフォルトでは10分間待機してしまいます。
この死に損ないのソケットはroot権限で"rmsock"を投げることで消せます。
# netstat -Aa | grep FIN_WAIT_2 5cced40 tcp 0 0 192.168.11.3.49183 bp-in-f104.g.http FIN_WAIT_2 # rmsock 5cced40 tcpcb
これがなかなか解らなくて結構苦戦した。
最近shellの便利さに気がついたので、ちょこちょこと小ネタを書いておくことします。
自作したアプリが激しい落ち方したり、開発中でプロセスが大量に残ってしまうことが希に有ります。
そんなときいちいち"kill"を投げるの面倒なので、shellで一発。
$ ps -ef | grep [プロセス名] | awk '{print $2}' | xargs kill
コレで指定したプロセス一気に殺せます。
僕はこれを"minagoroshi.sh"として、ホームに置いておいたりします。
ps の出力からawkでプロセスIDだけ切り出して、その出力をkillにxargsコマンドで引数として渡します。
簡単なコマンドの組み合わせですが、意外と便利。
仕事でshellを書いていたんですけど、エコーバックなしの標準入力ってどうやるのか解らなくて、
探しまくりました。
#!/bin/sh echo "パスワード:\c" read PASS echo "入力したパスワード:\c" echo $PASS
これじゃあ、入力したパスワードが丸見えなので、非常にかっこわるい。
調べてみたら、stty(set ty)を使えば良いらしい。
#!/bin/sh echo "パスワード:\c" stty -echo read PASS stty echo echo echo "入力したパスワード:\c" echo $PASS
'stty -echo'でエコーバックをけして、'stty echo'でエコーバックするように戻せる。
初め試しに'stty -echo'だけ実行したら、CLIすべてでエコーバックでなくなってビビッたけどね。















