crontabファイルを編集する正しい方法は何ですか?


52

私は私のウェブサーバーのawstatsの更新を自動化しようとしていますが、それを設定するにはcronを使用する必要があることを理解しています。各ユーザーにはcrontabファイルがありますか?

私はここの指示に従ってコミュニティ/ AWStats

そして、それは次のファイルに行くように言っています: /etc/crontab

そのファイルにはすでにいくつかの情報が含まれています。これはメインcrontabファイルですか?でポップアップするファイルを使用するためのいくつかの指示をオンラインで見ましたcrontab -e

使用する適切なファイルとこれを行う最良の方法は何ですか?

非rootユーザーとしてタスクをスケジュールした場合、指定された時間間隔で問題なく実行されますか?

cronジョブをcrontabファイルに保存した後、サーバーを再起動してから作業を開始する必要がありますか?

回答:


50

使用する適切なファイルとこれを行う最良の方法は何ですか?

crontab -e これが最善の方法です-これにより、ユーザーごとのcrontabを簡単に編集できます。

非rootユーザーとしてタスクをスケジュールした場合、指定された時間間隔で問題なく実行されますか?

はい。そのユーザーアカウントの権限で実行されます。

原則として、逃げることができる最低の特権でスケジュールされたタスクを実行することが最善です。そのため、実行している作業がrootを必要としない場合は、rootを使用しないでください。アカウントのファイルやフォルダーにアクセスする必要さえない場合は、新しいユーザーを作成し、そのタスクにのみそのユーザーアカウントを使用できます。一方、タスクにルート必要な場合は、ルートのcrontabを使用ます(ルートにsu/ sudo suを使用してからを使用crontab -e)。

crontabファイルにcronジョブを保存した後、動作を開始する前にサーバーを再起動する必要がありますか?

いいえ、すぐに動作します(まあ、次に予定されている時間)。

ファイルを直接編集してみませんか?それはどこにありますか?

ユーザーのcrontabファイルはにありますが/var/spool/cron/crontabs、それらのアクセス許可は、スーパーユーザーのアクセス許可なしでは移動できないように設定されています(ただし、一度開いてcronプロセスが特権を落とすと、ファイルにアクセスできます)。

システムは、エンドユーザーがこれらのファイルを直接編集するようには設計されていません。実際、ファイルの上部には、DO NOT EDIT THIS FILEこの影響に対する厳しい警告が上部にあります。その代わりに、ファイルは編集用に設計されており、編集crontab -eのためにファイルの一時的なミラーをセットアップします/tmp-厳しい警告なしで-その後、永続的なcrontabファイル自体をチェックしてインストールします。これはすべて、スーパーユーザーの許可なしに実行できます。

crontabファイルを直接編集した場合、結果がどうなるかわかりません。次の再起動まで有効にならない可能性があり、エラーをデバッグするのは難しいかもしれません。


5
crontab -esudoなしでユーザーのcrontabを編集できます。ユーザーのcrontabには、/var/spool/cron/crontabsスーパーユーザーの許可なしではアクセスできないディレクトリがあります(ただし、cronが特権をいったん削除すると、引き続き読み取ることができるようになります)。sudoを使用してファイルを直接編集しようとしても、上部に「このファイルを編集しないでください」という大きな警告が表示されます。このファイルはcrontab、一時コピーを使用して/tmpインストールするコマンドを使用して編集するように設計されています保存した後。
トーマスラッター

25

すべてのユーザーがそれを所有していcrontabます。

それを見るには

crontab -l

そして、はい、あなたが追加したい場合は、右のそれを見てきたcrontabだけで行い、その後

crontab -e

初めて使用するエディタについて尋ねられますcrontab。あなたが言うように初心者であるように、私はナノを使用することをお勧めします、それは使用する最も簡単なエディタです。

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

はい、それを実行するのに十分な権限を持つユーザーのcrontabにcronjobを配置することが非常に重要です。

そのため、スクリプトをrootまたは特別なユーザーにする必要がある場合は、そのユーザーに対してsuを実行し、そこにcronjobを追加してください。

また非常に重要です!

cronjobは愚かです!はい、私はそれを言った。application/command/script使用しているPATHに完全なPATHを入力することを常に確認してください。これは、crontabが動作しない.bashrcか、類似するものではないためです。ファイルとディレクトリを見つけることができる場所をcronに伝えることを常に確認する必要があります。

残りの質問に答えるには:

もちろん、それはそれ自身で実行されます、それはそれがそこにあるものです。しかし、cronjobが実際にそれを実行するか、何か欠落していることを確認する必要があります。たとえば、ログファイルにログインして、実際に機能するかどうかを確認します。

いいえ、再起動は必要ありません。Linuxでの再起動は、通常、新しいカーネルをインストールする場合にのみ必要です。使用するには、再起動する必要があります。Linuxで再起動せずに、他のほとんどすべてを実行できます。もちろん例外もありますが、一般的にこの記述は正しいです。


時間の形式を確認するには、このサイトを確認してくださいcrontab.guru
Astm
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.