こんにちは。
今回crontabを書く機会があったので、毎回調べることになっている書き方と”command > /dev/null 2>&1″の意味についてまとめようと思います。
めっちゃ使うわけじゃないけど、たまに使うときに忘れちゃうんですよね~
ではいきましょう!
ちなみにこちらの記事を参考にさせていただいております。
いい加減覚えよう。 command > /dev/null 2>&1 の意味
Table of Contents
cronでできること
cronでできることっていうのは定期実行になります。
毎回同じ作業を行ったり、決まった時間に行う作業がある際にはcronを使って自動化させることができるでしょう。
プログラムを作ってそれを定期実行させたりします。
そのほかにも定期的に何か行いたいときに利用できます。
cronの書き方
* * * * * コマンド
分 時 日 月 曜日 コマンド
上記が基本的なcronの書き方になります。
以下ではcronの開き方等です。
cronを表示
cron -l
cronを開く
cron -e
例:
毎日7時にあるシェルスクリプトを起動させたい場合
* 7 * * * /home/yama/test.sh
Code language: JavaScript (javascript)
上記のようにすると毎日7時に該当するシェルスクリプトが実行されますね。
command > /dev/null 2>&1の意味
これはよく見る書き方ですね。
なんとなく書くことがあるかと思うのでこの機会に理解します!
まずは分解して考えましょう。
command > /dev/null
まず、>はリダイレクトですね。
リダイレクトがわからない場合には以下のブログを確認してみてください。
5分で一通り理解できる!Linuxのリダイレクト 使い方と種類まとめ
command > /dev/null
Code language: JavaScript (javascript)
これはコマンドの標準出力を/dev/nullに出力していますね。
するとどうなるか。
/dev/nullというのはスペシャルファイルといって、/dev/nullに書き込まれたデータは全て破棄されて、なくなります。
ということで何が起こるかというと、コマンドの標準出力結果が消されます。
2>&1
2>&1についてですが、これは標準エラー出力を標準出力に入れることを指します。
標準出力と標準エラー出力には番号が振られていて、
- 標準出力=1
- 標準エラー出力=2
となっているんですね。
結局何をしているのか?
先ほどの分解した結果を合わせると、
- 標準出力を削除する
- 標準エラー出力を標準出力に入れる
結果、標準エラー出力と標準出力は同じ場所に入れられるわけですね。
そして/dev/nullに入れられるというわけです。はい、削除です。
出力結果が消されるわけです。
なんでcommand > /dev/null 2>&1を入れるのか?
例えばメールを設定しているとすると、標準出力、標準エラー出力のたびにメールが届いたりするわけです。
それが毎回毎回届くと面倒ですよね。
なんで、ゴミ箱に入れちゃうわけです。
何か出力させたいとかだと、エラー出力をログファイル作ってそこに主力させたりとかも良いですよね。
まとめ
たまにやると、毎回調べることになって自分自身面倒だったので簡単にまとめました。
意外とまとめてみると勉強になることって多いですよね。
では!