2007年12月11日

[linux-users:107830] Re: cronに関して

星野と申します。

> これって UI のベースにもなるヒトの思考パターンと
> いうものに関して非常に有益なサンプルになるんですよ。
ということで、しらい様にサンプルを提供致します。

> > 01 * * * * root run-parts /etc/cron.hourly
> > 02 4 * * * root run-parts /etc/cron.daily

> > 22 4 * * 0 root run-parts /etc/cron.weekly
> > 42 4 1 * * root run-parts /etc/cron.monthly

これらの文字列は、その意味を全く知らない人間にとっては
規則性を備えているらしき無意味綴りに近いものがあります。
(特に数字部分)
Linuxをにわかに使い始めた人間にとっては、
日時を表している数字の羅列に、rootと呼ばれる管理者アカウントが
プログラムを動かす(run-parts)らしき事が分かります。
その他フォルダ(/etc=エトセトラ)にあるWindowsのタスク的な
プログラム(cron)が毎時、毎日、毎週、毎月で実行されるのだろうと。

で、肝心な数字部分ですが、人は未知のものを処理するときは
既成概念を以ってします。
個々の経験や常識的判断と言ってもいいでしょう。
そして日本人の常識的な時間の読み方は、"何時何分"です。
ぱっと見、毎時1時、毎日2時4分、毎週22時4分と読めてしまいます。
仰る通り4行目を見て、初めて"何時何分"という並びではないことが分かります。
(あくまでぱっと見です。事前にmanなど読んではいけません)
しかし4行目を見て違うと分かっても、またぱっと見2時4分という
読み方に戻ってしまいます。
十年二十年の単位で積み上げた時間の読み方は、
瞬時に切り替わるものではありませんから。

もう一つ、そのような読み取り方の原因となるのは".daily"の部分です。
crontabの文字列の中で、唯一素直に理解できる英単語がある為に、
そこを偏重して注目してしまいがちです。
(あくまでも初心者的にです。有識者はお呼びではありません)
そして".daily"という言葉に意味を持たせて考えてしまいます。
".daily"だけで意味が通ってしまっているので、"02 4 * * *"で何故毎日実行なのか、
とりあえず考える必要に迫られません。
或いはcron.dailyというものが実行ファイルなのか設定ファイルなのか、
またはコンフィグの一つのように捉えられてしまいます。

".hourly"もついつい毎時1時に実行するように解釈してしまいます。
意味が明確に分かるものが上位に来て、その下の階層に意味の分かりにくい
数字をくっつけて考える為でしょうか。
(その数字のくっつき方は、何時何分形式になるわけです)
よく考えると1時というのは一日1回しか巡ってきませんが、
数字の解読に"*"という日常存在しない時間の読み方も加わっている上に、
日本人の常識的時間の読み方とは反する読み方(何分何時形式)を強いるので、
混乱してすぐには気付きません。
(私だけかもしれませんが)。

#私はcronでもいきなりlogrotate辺りに触れて、余りの複雑さに参ってしまいました。


投稿者 xml-rpc : 2007年12月11日 13:45
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/67487
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。