teeコマンドの使い方

  • 152
    いいね
  • 0
    コメント

「コマンドの結果をファイルに出力したいけど、標準出力でも出力を見たい!」、という欲張りな要望に答えてくれる意外と頼もしいコマンド。

簡単な使い方

ファイルを上書きする

vagrant ssh-config --host 192.168.33.20 | tee result.txt

ファイルに追記する

-a オプションをつける。

vagrant ssh-config --host 192.168.33.20 | tee -a result.txt

sudo でファイルに書き込みできるようにする

リダイレクト先に書き込むときに特権が必要な場合、そのままではうまく書き込みできません。
以下は swappiness を変更する場合の例です。

$ cat /proc/sys/vm/swappiness 
60
$ sudo echo 0 >/proc/sys/vm/swappiness 
-bash: /proc/sys/vm/swappiness: 許可がありません

そこで tee コマンドを使います。

$ echo 0 | sudo tee /proc/sys/vm/swappiness 
0
$ cat /proc/sys/vm/swappiness 
0

いい感じにオンザフライで変更できました。

swappiness の蛇足

ちなみに蛇足ですが swappiness の設定で 0 を設定するのは Kernel 2.x 系では物理メモリを使い果たしてからスワップアウトするという意味になりますが、
Kernel 3.5 以上になると 0 の取扱いが変わって、物理メモリがなくなるとスワップアウトせずに OOMKiller が発動します。
なのでKernel 3.5 以上では 1 が適当です。

標準エラー出力もファイルに保存する

リダイレクトを使う。これをやらないと標準エラー出力だけファイルにロギングされないという事態になってしまう。

ping 9999 2>&1 | tee result.txt

参考サイト