Webサーバのawstatsの更新を自動化しようとしているのですが、その設定にはcronを使う必要があると理解しています。 各ユーザーがcrontabファイルを持つのですか?
私はこちら community/AWStatsの指示に従っています。
そして、以下のファイルにアクセスするように書かれています。/etc/crontab
そのファイルにはすでにいくつかの情報が入っています。 これはメインのcrontab
ファイルか何かでしょうか? ネット上では、crontab -e
で出てくるファイルを使うという指示を見たことがあります。
どのようなファイルを使うのが適切で、最良の方法なのでしょうか?
非rootユーザーでタスクをスケジュールした場合、指定された時間間隔で勝手に実行されますが、問題はありませんか?
crontab`ファイルにクーロンジョブを保存した後、サーバーを再起動しないと動作しませんか?
**使用する適切なファイルと最良の方法は何ですか?
crontab -e`が最も良い方法です。これにより、ユーザーごとのcrontabを簡単に編集することができます。
**非rootユーザーでタスクをスケジュールした場合、指定された時間間隔で問題なく実行されますか?
はい、そのユーザーアカウントの権限で実行されます。
原則として、スケジュールされたタスクは、できる限り低い権限で実行することが望ましいので、rootを必要としない場合は、rootを使用しないでください。 自分のアカウントのファイルやフォルダにアクセスする必要がないのであれば、新しいユーザーを作成して、そのユーザーアカウントをそのタスクのためだけに使うことができます。 一方、タスクがrootを必要とする場合は、rootのcrontabを使います(su
/ sudo su
でrootになり、crontab -e
を使います)。
**crontabファイルにクーロンジョブを保存した後、サーバーを再起動しないと動作しないのでしょうか?
いいえ、すぐに(というか、次に予定されている時間に)動作を開始します。
**なぜ、そのファイルを直接編集しないのですか? そのファイルはどこにありますか?
ユーザーのcrontabファイルは/var/spool/cron/crontabs
にありますが、そのパーミッションはスーパーユーザーのパーミッションがないとアクセスできないように設定されています(ただし、一度オープンしてcronプロセスがパーミッションを落としてもファイルにアクセスできます)。
このシステムは、エンドユーザーがこれらのファイルを直接編集できるようには設計されておらず、実際にファイルの上部にはその旨を示す厳重な「DO NOT EDIT THIS FILE」の警告が表示されています。 このファイルは、crontab -e
で編集できるように設計されています。crontab は、/tmp
にファイルの一時的なミラーを設定して、厳しい警告を出さずに編集できるようにした後、恒久的な crontab ファイルをチェックしてインストールします。 この作業は、スーパーユーザーの権限がなくても行うことができます。
仮にcrontabファイルを直接編集した場合、どのような結果になるかはわかりません。 もしかしたら、次回の再起動まで有効にならないかもしれませんし、エラーが出てもデバッグが難しいかもしれません。
すべてのユーザーは、それぞれの「crontab」を持っています。
それを見るには、次のように入力します。
crontab -l
そして、「crontab」を追加したいときには、次のようにします。
crontab -e
を実行すると、最初に crontab
で使用するエディタについて尋ねられます。あなたがおっしゃるように初心者なので、私はnanoを使うことをお勧めします。nanoは最もシンプルなエディタです。
crontab自体は次のように動作します。
MIN = Minute 0-60
HOUR = Hour [24-hour clock] 0-23
MDAY = Day of Month 1-31
MON = Month 1-12 OR jan,feb,mar,apr ...
DOW = Day of Week 0-6 OR sun,mon,tue,wed,thu,fri,sat
COMMAND = Command to be run Any valid command-line
例えば、月曜だけ15分ごとにジョブを起動するには、次のようにします。
*/15 * * * mon /home/me/yourscript.sh
そして、cronjobを実行するのに十分な権限を持つユーザーのcrontabに入れることが非常に重要です。
したがって、スクリプトがrootや特別なユーザーである必要がある場合は、必ずそのユーザーにsuしてcronjobをそこに追加してください。
これも非常に重要です。
cronjobはダサい!はい、言いました。crontabは.bashrc
などでは動作しないので、必ず使用しているapplication/command/script
への完全なPATHを入力してください。crontabは.bashrc
などでは動作しませんので、cronがファイルやディレクトリを見つけられる場所を常に教えておかなければなりません。
残りの質問にお答えします:。
もちろん、cronはそれだけで動作します。しかし、cronjobが本当に実行するのか、何かが欠けていないかを確認する必要があります。例えば、ログファイルにログインして、本当に動作しているかどうかを確認します。
また、再起動は必要ありません。Linuxの再起動は通常、新しいカーネルをインストールしたときにのみ必要です。それを使うためには再起動が必要になります。他のほとんどのことは、Linuxでは再起動なしでできます。*もちろん例外はありますが、一般的にはこの記述は正しいです。