crontabの設定方法をすぐに忘れるのでメモ代わりにまとめています。 ※最初にまとめてからかなり時間が経過したので、内容の精査とその間に勉強した項目を追加しました。crontabを設定する方法crontabを設定する方法には2通りの方法があるので説明をしていきます。crontab -e ※コマンドで設定crontab ファイル ※ファイルを読み込んで設定 「crontab -e」コマンドで設定 「crontab -e」コマンドを実行するとcronを設定する画面が表示されます。 「e」では無く、横にある「r」を誤って指定してしまうと、設定されているcronの内容が削除されてしまうので注意してください。 $crontab -e 設定を編集する画面が表示されるので、下記のような書式で設定を行います。 00 * * * * /root/disk-space.sh ちなみに、設定している

今までナチュラルにcrontab -eでcron編集をしていたのだけど、実はこれはとてつもなく危ないやり方だった。ということを、今さら知った。crontab -rの恐怖crontabコマンドにはrオプション(Remove)があり、これを実行すると何の警告もなく全てが消え失せる。macbook:~ ozuma$crontab -l 15 * * * * /home/ozuma/bin/hoge.sh 0 9 1 * * /home/ozuma/bin/piyo.sh > /dev/null 2>&1 */5 * * * * /home/ozuma/bin/fuga.sh > /dev/null 2>&1macbook:~ ozuma$crontab -rmacbook:~ ozuma$crontab -lcrontab: nocrontab for ozumamacbo
(タイトルは釣りです) いい加減、>/dev/null 2>&1と書くのをやめたらどうか - DQNEO起業日記 この記事のタイトルがtwitter で流れてきたのを見て、「そうだ!出力を /dev/null に捨てるなんてとんでもないよね!」と思ってよく読んだら /dev/null に間違いなく捨てる方法だったのでついcrontabに > /dev/null 書いたら椅子投げる 2012-06-13 00:01:17 via YoruFukurou とつぶやいてしまったのですが、では出力を捨てないためにはどうすればいいのか。現時点での個人的ベストプラクティスを書き留めておきます。 デフォルト : メールで送る (MAILTO) せっかくcron daemon がログを捨てないためにわざわざメールで送ってくれるのに、それを > /dev/null で踏みにじるとはひどい。 とはいえ、
はじめに これから書く内容は、シェルスクリプトをばりばり書いている現場(サーバエンジニア・インフラエンジニア)向けのものではありません。 年に数回crontabをいじるような現場(サーバに詳しくないアプリケーションプログラマが多数を占めるような現場とか、Webデザイナや非プログラマがcrontabをおそるおそるいじったりするような現場)を想定しています。 >/dev/null 2>&1 の問題点 この記法の問題点は、「覚えにくい、間違えやすい、間違ってても気づかない」ということです。 初心者を迷わせる要素がこんなにあります。 >/dev/nullは先か後か 1と2はどちらが先か &はどこに書くのか よって下記のように多種多様なミスが起こり得ます。 2>&1 >/dev/null >/dev/null 1>&2 >/dev/null 2>1& >/dev/null &2>1 これをぱっと見て
cronスクリプトの中でアンパサンド(&)を使ってコマンドをバックグランド処理しようとしても、このコマンドが終了するまでcronは次の処理に移行しません。 どういうことかというと、例えば以下のスクリプトをcronに登録します。 /etc/cron.hourly/sleep15.sh(修正前) #!/bin/bash sleep 15 & これだと、cronは「sleep 15」が終了するのを待ってしまいます。 これを解決するには、このプロセスがopenしているファイルディスクリプタをcloseします。 /etc/cron.hourly/sleep15.sh(修正後) #!/bin/bash sleep 15 >/dev/null 2>&1 & なぜこのようなことをしなくてはならないかというと、cronの仕様がそうなっているからです。crontab により実行されたコマンドから出力が行われ
cronは分単位からの制御が可能だが、秒単位まではサポートしていない。 というわけで、例えば30秒毎などに実行したい場合は工夫が必要になる。 # ニーズがあるかはわからないが、例えば短い周期で監視を行っている場合など。 例えば、30秒毎に実行したい場合は、以下のようにcronの設定を記述する。 * * * * * command & sleep 30; command上記の"command"の部分に、実行したいコマンドを記述する。 1つ目の"command"を実行しながら、それと並列して30秒間sleep、そして2つ目の"command"を実行、という流れ。 他にも、毎分15秒に処理を実施したい場合は以下。 * * * * * sleep 15; command 上記が、何かのお役に立てば。 追記 bashの"&"と"&&" - 元RX-7乗りの適当な日々 詳解Linuxカーネル 第3版

1リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く