• 締切済み

cronはどの方法で設定すべきでしょうか?

CentOS4,4をつかっています。(VPSです。・・・共有サーバだけど、実質root権限が持てます) で、cronを設定するときに、 「 crontab < updatedb.txt」(updatedb.txtはcronの書式が書いてあるファイル) でやる方法と、 /etc/cron.weekly /etc/cron.monthly /etc/cron.dai に前述のupdatedb.txtをいれる方法があるようですが ・・・って、違ってたらすみません。指摘してください。 いったいどちらの方法がベターなのでしょうか? なお、毎週火曜日のAM3:24に実行したいcronは、後者のやりかたでは実現できない、 というメリットは分かっています。 どなたかお分かりの方がいらっしゃいましたら、お教えいただけないでしょうか? 以上、よろしくお願いいたします。

みんなの回答

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.5

case 1:システムの運用・管理の処理で、特定の実行日時or時刻に実行したい処理==>/etc/crontab に書く(system cronファイル) 修正後、cronかcrond のrestartかreloadが必要 case 2:システムの運用・管理の処理でどのサイクルで実行するかが重要でどのタイミングで実行するかは重要でない処理==>/etc/cron.xxxxの下に格納(タイミングはcase 1のファイルに記述してある) case 3:システムの運用・管理でない処理==>実行するユーザーで、 crontab -e で書く。もしくは何らかのファイルに書いて crontab < file。 case 1 と case 3 は微妙に書式が違うので注意です。

ymck
質問者

お礼

なるほど、詳しくありがとうございます。 参考にさせていただきます。

回答No.4

crontab -eで編集でいいんじゃないでしょうか? ​http://x68000.q-e-d.net/~68user/unix/pickup?keyword=crontab&tar...​ の方法でやった場合、#crontab < updatedb.txtで登録し、あとから変更が生じて修正する際に#crontab -eで編集してしまうと、updatedb.txtの内容と実際のcronに登録されている内容が違ってきてしまうので、#crontab < updatedb.txtでやるんならやり方をそれで統一したほうがいいという意味だと思います。 例えば、初回登録後2回修正があったとして、、 1回目:crontab < updatedb.txtで登録 2回目:crontab -e で直接編集して修正 3回目:(1回目に使った)updatedb.txtを再度編集して、crontab < updatedb.txtで登録 とやると2回目の修正内容が失われる(なかったことになる)可能性がありますよね?(そんなことないよ、と思うかもしれませんが前回修正(登録)から半年とか1年とか空くと前回のことなんて覚えてないものです。)だから、やり方は統一しておきましょうという程度の意味かと。 crontab -eを避ける深い意味はないはずです。

ymck
質問者

お礼

たしかに・・・どうもありがとうございました。

回答No.3

/etc/cron.*/したにシェルを置くのは ファイルを順番に処理してくれるのと、 root権限で動かしていることが明確であるのと 毎日や週一などのサイクルが単純明確なのがメリットだと思います。 crontabに登録するメリットは root以外でも、ユーザー権限で登録できることと 任意の時刻が指定できることだと思います。 なので、私は、ログの掃除やDBのバキュームなどは前者を使い、 定期メール発行などは後者を使うといったかたちで 処理によって使い分けています。

ymck
質問者

お礼

ご回答ありがとうございます。 なるほど、使い分けてらっしゃるのですね。 それは思いつかなかったです。 ありがとうございます。

回答No.2

下記のURLが間違っているわけではなく、 下記のURL(質問者さんが書かれている1番目)の方法を使った場合意に、 「crontab -e」を使ってはならない。。。という事だと思いますよ。 このサイトの著者がそうしているだけで一般的には、 最初からcrontab -eで作ってしまうか、 # cat updatedb.txt > /var/spool/cron/root # crontab -e(開いてすぐセーブ) のどちらかが、多いんじゃないでしょうか。

ymck
質問者

お礼

なるほど、 cat updatedb.txt > /var/spool/cron/root の方法しりませんでした。 どうもありがとうございました。

  • tsaito
  • ベストアンサー率68% (17/25)
回答No.1

私は、"crontab -e" で開いて編集します

ymck
質問者

お礼

ご回答ありがとうございます。 で、「crontab -e」で直接編集しないように気をつける必要がある、 というのを複数のサイトでみました・・・。 なんかしらの問題(矛盾)が生じる可能性があるとか・・・と記憶しています。 実際、どんな問題(矛盾)が生じるのか知りたく思います・・・。 ※あと、少なくとも確実なのは「crontab updatedb.txt」した後《前も?)  「crontab -e」してはいけないということです。  参考URL:  http://x68000.q-e-d.net/~68user/unix/pickup?keyword=crontab&target=command //----------------------------------------------------------- と、ここまで書いて、上記でまちがっている可能性があります。 なので、間違いがあったら指摘していただけると幸いです。 よろしくお願いいたします。

関連するQ&A