Help us understand the problem. What is going on with this article?

teeコマンドの使い方

More than 1 year has passed since last update.

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

ちなみにサンプルが vagrant コマンドとか使ってますが、あくまで例の一つ。 rsync とかダラーッと出力されるもののほうが良かったかもしれない。

簡単な使い方

ファイルを上書きする

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

参考サイト

wnoguchi
Software Engineer(Server, Network): Design, Implementation, Operation. Infrastructure Division.
https://pg1x.com/
unicast
ユニキャストは、茨城大学工学部発の学生ベンチャー企業として、2005年に産声をあげました。 ミッションである『テクノロジを通じて「驚き」と「感動」を創造し、人々の「夢」と「希望」を支えます。』を合言葉に、これからも幅広く価値発信してまいります。
http://www.unicast.ne.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away