ルートとして実行する必要がある定期的なシステムメンテナンスタスクを設定しています。Ubuntu 14.04 LTSに付属するcronをデフォルトとして使用する予定です。
前の管理者(退職してから)が/ etc / crontabを直接編集しているのがわかります。ただし、別の可能なアプローチはcrontab -e
ルートとして使用することであることを理解しています。どちらか一方を使用する説得力のある議論がありますか、それとも好みに依存していますか?
ルートとして実行する必要がある定期的なシステムメンテナンスタスクを設定しています。Ubuntu 14.04 LTSに付属するcronをデフォルトとして使用する予定です。
前の管理者(退職してから)が/ etc / crontabを直接編集しているのがわかります。ただし、別の可能なアプローチはcrontab -e
ルートとして使用することであることを理解しています。どちらか一方を使用する説得力のある議論がありますか、それとも好みに依存していますか?
回答:
個人のcrontab(crontab -e
)内のジョブは常に所有者として実行され、管理者が非rootユーザーとして実行するようにジョブを構成できる/etc/crontab
追加の必須<user>
フィールドが含まれていることに注意してください。
システムcrontabの編集またはroot用の個人用crontabのセットアップは、おそらくより移植性が高く、特定のLinuxディストリビューションに固有のものではなく、すべてのジョブを単一ファイルで管理する方が間違いなく便利です。
個人的に私は3番目のオプションを好みます:スケジュールされたタスクごとにドロップ
/etc/cron.d/
cronスニペット付きのファイル/etc/cron.[hourly |daily |weekly |monthly]
ディレクトリ内の実行可能ファイル(スクリプト)。スクリプトは簡単です(このようなファイルを簡単に作成/上書き/削除でき、単一のcrontabファイルの内容をいじる必要はありません)。また、構成管理ツールとうまく機能します。とにかくやって。
のジョブ/スクリプト/etc/cron.[hourly |daily |weekly |monthly]
は常にrootとして実行されます。cronスニペットで/etc/cron.d/
は、カスタムスケジュールの設定と、にある同じ必須<user>
フィールドで別のユーザーとして実行することができます/etc/crontab
。
/etc/crontab
、cron
パッケージを更新するたびにマージが必要になることです。/etc/cron.*
ディレクトリの1つに新しいファイルを追加するだけであれば、その問題はありません。
/etc/cron.[hourly |daily |weekly |monthly]
は実行可能ファイルを/etc/cron.d
保持し、crontab を保持することを追加する必要があります。それ以外に、+ 1。
私が最もよく思い出すように、crontab -e
インストールする前にcrontab構文を検証し、間違えた場合は以前のものをエラーにして復元するという追加の利点があります。このように、構文が間違っていても、以前は機能していたものが突然停止することはありません。ベストプラクティスは、直接visudo
編集/etc/sudoers
するのではなく実行するなど、ユーティリティを使用することだと思います。
/etc/crontab
、6列目にユーザー名の行を入力できるようにします)。-対話型ツールを使用することは「ベストプラクティス」ではないと主張したいのですが、Puppet / Salt / Ansibleなどのツールで自動化する必要があります。そもそもサーバーを手動で構成しないでください。一方、あなたが古い学校の場合は、実際にツールを使用してください。
これは本当にスタイルの質問です。OSによって複数のメソッドが提供されている理由があります。他の誰かを混乱させたくない場合(または、システムを処理しなかった後のあなた自身)-ホスト全体で実際にスケジュールされているタスクを確認するのが難しい場合は、一貫性を保ち、混在させないでください厄介な驚きに終わります。
特定のユーザーの権限を必要とするcronジョブを確実に追加するには、個人的に次のコマンドを使用します。
# crontab -u <user> -e
追加することもできsudo
ます。
@rackandbonemanが述べたように、/ etc / cron.d /ファイルをいじる必要はありません。問題がユーザーのcronジョブに関する場合は、crontab
コマンドの機能を使用します。