Linuxでコマンドの実行ログ(Cronも)をファイルに出力する方法
コマンドを実行した際にエラーが発生した時、何かと役に立つのがログです。
しかし、そもそもログに実行結果やエラー内容などを残しておかないと話にならないですよね。
今回は実行結果言い換えれば標準出力(以下、標準出力)とエラー内容言い換えれば標準エラー出力(以下、標準エラー出力)をファイルとして残す方法をポストします。
標準出力と標準エラー出力をファイルに出力する例
例えば
を実行した時にその標準出力と標準エラー出力を出力するには、コマンドの後ろに1>> 標準出力ログファイルパス 2>> 標準エラー出力ログファイルパスを入力します。foo.sh
コードで書くとこんな感じです。
~/foo.sh 1>> /var/log/exec.log 2>> /var/log/error.log
解説
1と2について
上記の1は標準出力を意味します。
上記の2は標準エラー出力を意味します。
上記の
に実行結果である標準出力を追加すると言うことになります。1>> /var/log/exec.log
だと、
/var/log/exec.log
上記の
にエラー内容である標準エラー出力を追加すると言うことになります。2>> /var/log/error.log
だと、
/var/log/exec.log
cronで使うには
このような標準出力と標準エラー出力のログの保存は、プロンプトで直でコマンド実行する時よりはcronが実行された時の方が良く使われますね。当然下記のようにcronの時も上記全く同じシンタックスで使えます。
0 7 * * * ~/foo.sh 1>> /var/log/exec.log 2>> /var/log/error.log
標準出力と標準エラー出力のログファイルを同じファイルにするには
一つにまとめてログファイルを保存にしたい場合は下記のようにします。
0 7 * * * ~/foo.sh >> /var/log/result.log 2>&1
注意
1> /var/log/exec.log
のように>を一つだけにすると、上書き保存になってしまうので、追加して入れるには>>になるようにしてください。
ディスカッション
コメント一覧
まだ、コメントがありません