基本編
「"y"を一文字入力して改行するを無限に繰り返す」が基本動作となる。# yesyesの後に文字列を書けば、その文字列が繰り返される。
y
y
y
y
y
~以下略~
y
y
^C ←Ctrl + Cで止める
#
# yes no
no
no
no
no
no
~以下略~
no
no
^C ←Ctrl + Cで止める
#
このコマンドの意図される使い方は、rmコマンド等でyes/noを求められる際にyesをパイプで渡してやると、いちいち"y"を押してエンターする手間が省けるという使い方ができることらしい。rmでは-fオプションあるから、よほど変わった人では無い限り常用はしないだろうが、-fオプションの無いコマンドでは使い道はあるかもしれない。
# yes | rm testfile.txt
rm: remove 通常ファイル `testfile.txt'? ←間髪入れずにyが入力される
#
応用編
このコマンドの真髄は、アイデアによって面白い使い方ができることだと思う。特にサーバーへ負荷を掛けるにはうってつけである。CPUに負荷を掛けるyes
# yes > /dev/null
※CPU負荷が高くなる原理:/dev/nullに"y"を無限に出力する。この処理がCPUを使い切る程の速度で実行されるため(画面描写が無いので超高速)
メモリに負荷を掛けるyes
# /dev/null < `yes`
または
# /dev/null < $(yes)
※メモリ負荷が高くなる原理:/dev/nullに`yes`(=$(yes))を入力する。無限に続くyが入力されることによって、メモリを沢山使ってくれるらしい(理解不足)
ちなみに、この処理は徐々にメモリ使用量が上がっていく動作をするので、早く上げたい場合は、yesの後に文字列を付与すると多少早くなるようだ。
# /dev/null < `yes aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`
参考URL
UNIXシェルスクリプトメモhttp://www.ne.jp/asahi/hishidama/home/tech/unix/sh.html
0 件のコメント:
コメントを投稿