現在使用中のシェルを確認するには、
# echo $SHELL
とすれば確認できる。
その他、利用できるシェルを確認するには
# cat /etc/shells
とする。
■リダイレクトについて
commandコマンドが出力を伴うコマンドの場合、commandコマンドの出力をresult.txtへ出力するには
# command > result.txt
コマンドの実効結果を別のコマンドの入力値とする場合は、|(パイプ)でつなげる。
# command1 | command2
■標準出力と標準エラー出力について
・標準出力
正常結果やコマンド実行途中に出力されるメッセージの出力先。
・標準エラー出力
異常終了時のメッセージやエラーメッセージなど、ユーザーに気づいてほしいメッセージの出力先。
■標準出力と標準エラー出力の両方をリダイレクトする
先のcommandコマンドのリダイレクト例のうち、result.txtへのリダイレクトは、標準出力をリダイレクトしている。そのため、標準エラー出力はリダイレクトされず、仮にcommandコマンドが標準エラー出力へメッセージを出力した場合は、result.txtではなくコンソールへ出力(表示)される。
標準出力と標準エラー出力の両方をリダイレクトして、result.txtへ出力するには、
# command > result.txt 2>&1
とする。
なお、上の例を省略なしで記述すると
# command 1> result.txt 2>&1
となる。
この「1」「2」の番号について。
・1:標準出力。通常はコンソール画面。
・2:標準エラー出力。通常はコンソール画面。
となっている。
ちなみに、「0」は「標準入力」。通常はキーボードからの入力。
例:標準エラー出力を error.log へ出力する。標準出力はコンソールへ表示する。
# command 2> error.log
例:標準出力は result.log 、標準エラー出力は error.log へ出力する
# command 1> result.log 2> error.log
ここまでは前置き。で、ここからが本題。
# 標準出力と標準エラー出力をメールで送信。cron実行アカウントのmailボックスへ送信される。
0 * * * * /usr/local/sbin/hoge.sh 5 2 * * * /usr/local/sbin/fuga.sh
# 標準出力と標準エラー出力をメールで送信。全てのcron実行結果が"hoge@example.dom"へ送信される。
MAILTO="hoge@example.dom" 0 * * * * /usr/local/sbin/hoge.sh 5 2 * * * /usr/local/sbin/fuga.sh
特定のバッチだけ違うメールへ送信する場合、2>&1 とすることで標準エラー出力もメールで送信できる。
# 標準出力と標準エラー出力をメールで送信。hoge.shの実行結果を"hoge@example.dom"へ送信し、fuga.shの実行結果をcron実行アカウントのmailボックスへ送信。
0 * * * * /usr/local/sbin/hoge.sh 2>&1 | mail hoge@example.dom 5 2 * * * /usr/local/sbin/fuga.sh
root以外のユーザーでcronを実行すると、通常はユーザーにメールが送信される。
これを知らずに放置しておくと、メールファイルがとんでもないことになる。
なので、こっちの記事も参考にどうぞ。
useradd で メールボックスファイルを作らない方法
http://chibitcpu.blogspot.jp/2014/04/useradd.html
0 件のコメント:
コメントを投稿