ドットインストール代表のライフハックブログ
本連載では第一線のPerlハッカーが回替わりで執筆していきます。今回のハッカーはsongmuさんこと松木雅幸さんで、テーマはcronです。 なお本稿のサンプルコードは、本誌サポートサイトから入手できます。 cronとは? cronは指定日時にジョブの自動実行を行うジョブスケジューラです。UNIX系のOSであれば実装の違いこそあれ、ほぼ標準でインストールされています。 作業自動化や、タスクを自動実行したいなどといった場合にcronは避けては通れません。Perlでバッチ処理を書く際などに多くの人が活用していると思いますが、ベストプラクティスがわからず恐る恐る使っている人も多いのではないでしょうか。 本稿では、cron活用におけるベストプラクティスについてお話します。 cronの使いどころ cronの使い途は、主に次の3つが考えられます。 a.アプリケーションのジョブの実行 b.システムに関わる
先日、/etc/cron.d/にファイルを設定してるのに、何故かcronが起動してくれないという問題があった。その時は/etc/cron.d/crontab.develというファイルを配置していた。 何でかなーと思ってman cronしてたらこういう記述を見つけた As described above, the files under these directories have to be pass some sanity checks including the following: be executable, be owned by root, not be writable by group or other and, if symlinks, point to files owned by root. Additionally, the file names must conf
ご存じの方には濡れ衣ですごめんなさい。 これ間違って理解してました。 真実を知って衝撃を受けました。 周りに聞いてみたら多くの人が同じく誤解してました。 問題 crontab でこういうスケジュールを設定したら コマンド hoge はどのようなタイミングで実行されるでしょう。 0 0 13 * 5 hoge こたえ 毎月13日の金曜日の0時0分 だと思ってたんだけど、これ間違いでした。 正しくは、 毎月13日または金曜日の0時0分 だった。はい「知ってたよ」っていう人はごめんなさいよ。 日と曜日だけ or になる crontab の書式は、基本的に and なんですよね。 0 9 1 10 * だと、 10月 かつ 1日 かつ 9時 かつ 0分 のタイミングで実行。 ところが、日と曜日だけは「または」になります。 さっき実験してみたけど実際にそうなった。 crontab – Wikiped
■ configureで使うシェルを指定するには環境変数CONFIG_SHELLで つまりksh ./configureとかじゃだめなのである。 なぜかというとconfigureはbashとか自分に都合のいいシェルをまず探して、 見つかるとそっちにスイッチしてしまうから。 だから/bin/bashが存在するだけで使われてしまう。 というわけでkshを使わせたければ % CONFIG_SHELL=/bin/ksh ./configure のように指定してやる必要がある。 ■ sudoku 自分でも解いてみるかと思ってsudokuを入れた。sudo aptitude install sudokuでok。 consoleアプリ。移動はviのようにhjklで。cでクリアして数字を入力すればいい。 fでfixして念の為sで保存しておく。その問題で立ち上げるときは % /usr/games/sudok
今までナチュラルに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>&1 macbook:~ ozuma$ crontab -r macbook:~ ozuma$ crontab -l crontab: no crontab for ozuma macbo
(タイトルは釣りです) いい加減、>/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用のコマンドを自動で生成します。 そのままコピペしてお使いください。 crontab -e で直接編集しない 有名な話ですが、crontab -r とやってしまうと全てが一瞬で消え去ります。 まさにバルス! 間違えて crontab -r してしまい、crontab をふっとばしてしまった。つか、隣同士にある -e と -r で編集と削除とか、酷いよ><。。。 crontab -r を安全にする - antipop 必ずローカルファイルに設定を書いたうえで、それを反映させるようにしましょう。 $ crontab -l > ~/crontab # 現在の設定をバックアップ $ vi ~/crontab # ローカルファイルを編集 $ crontab < ~/cro
昨今、cron のログにかんする話がちょいちょいありますが、問題点をまとめると stdout or stderr に1バイトでも書くとメールがとぶインタープリタのだす warnings や printf デバッグの名残りなどでもメールがいちいちとんでめんどくさいめんどくさいから出力を /dev/null にほうむりがちログを /dev/null にすてると運用にさしつかえるといったところかとおもいます。 これにたいする一般的なソリューションとして、かずほさんの cronlog というのがあって、これは exit status をみて stdout/stderr の出力を /dev/null または任意のファイルにおくってメールをとばさせないというソリューションです。 cronlog は便利なのだけど、毎行設定するのだるいという問題があるので、設定が簡単なように cron に以下のようなパッ
■ [ドラマ] 相棒 やっとシーズン6まで見終わった。シーズン7からはテレビで見てるので追いついたことになる。 DVDと再放送と今やってるシーズン9と同時に見てるが、全然混乱しないとことがなんかすごい。 ■ [Golf] perfect square free $:.fillか。これはおれも気づいてたんだけど環境依存なんだよね。ゴルフ場だと$:の要素は /usr/local/lib/site_ruby/1.8 /usr/local/lib/site_ruby/1.8/i486-linux /usr/local/lib/site_ruby/1.8/i386-linux /usr/local/lib/site_ruby /usr/lib/ruby/vendor_ruby/1.8 /usr/lib/ruby/vendor_ruby/1.8/i486-linux /usr/lib/ruby/ven
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く