【Linux】プロセスの入出力について

f:id:hira98:20190623161414p:plain

【結論】

  • プロセスの出力には、標準出力と標準エラー出力がある。

  • デフォルトだと両方ともファイルに出力されてしまう。

  • 標準出力と標準エラー出力の一方だけをファイルに出力することもできる。

【目次】

プロセスの入出力について

プロセスのデフォルトの入出力は次のように割り当てられています。

 0:標準入力

 1:標準出力

 2:標準エラー出力

ターミナル上でコマンドを実行すると1,2はターミナルに出力されます。

出力先を変更する方法

次のよう記述することで、特定の出力をファイルに出力することができる。

# 標準出力だけをファイルに出力する。
$ コマンド 1> out.txt

# 標準エラー出力だけをファイルに出力する。
$ コマンド 2> out.txt

Pythonで実動作例

【サンプルコード:sample.py】

print()のデフォルトの出力先は標準出力です。file=sys.stderrを指定することで出力先を標準エラー出力に変更することができます。

import sys

print("標準出力")
print("標準エラー出力", file=sys.stderr)

【実行例1】

デフォルトだと標準出力と標準エラー出力はターミナルに出力されます。

$ python sample.py
標準出力
標準エラー出力

【実行例2】

末尾に1> aaa.txtを追加すると、標準出力はaaa.txtに出力され、標準エラー出力だけがターミナルに出力されます。

$ python sample.py 1> aaa.txt
標準エラー出力

$ cat aaa.txt
標準出力

【実行例3】

末尾に2> aaa.txtを追加すると、標準エラーはaaa.txtに出力され、標準出力だけがターミナルに出力されます。

$ python sample.py 2> aaa.txt
標準出力

$ cat aaa.txt
標準エラー出力

windowsの場合はcatではなくtypeコマンドを使います。

参考情報

5分で一通り理解できる!Linuxのリダイレクト 使い方と種類まとめ

さいごに

このブログを書くのにかかった時間は約15分です😊

なぜなら、日報の内容をちょい変するだけだから😈