web-dev-qa-db-ja.com

/ etc / crontabを編集するか、rootとしてcrontab -eを実行する必要がありますか?

Rootとして実行する必要がある定期的なシステムメンテナンスタスクを設定しています。私は、Ubuntu 14.04 LTSに付属しているcronフレーバーをデフォルトとして使用する予定です。

以前の管理者(会社を辞めて以来)が/ etc/crontabを直接編集しているのがわかります。ただし、別の可能なアプローチはcrontab -eをルートとして。どちらか一方を使用する説得力のある議論はありますか、それとも好みによるものですか?

43
marcv81

個人のcrontab(crontab -e)内のジョブは常に所有者として実行されることに注意してください。/etc/crontabには、管理者がジョブを設定できるようにする追加の必須の<user>フィールドが含まれています。非rootユーザーとして実行します。

システムのcrontabを編集するか、rootの個人のcrontabを設定することは、おそらくより移植性が高く、特定のLinuxディストリビューションに固有ではなく、おそらく人にとってより便利です維持するために、すべてのジョブを単一のファイルに含める:

個人的に私は番目のオプションを好みます:スケジュールされたタスクのドロップごとに

  • cronスニペットを含む/etc/cron.d/内のファイル
  • 関連する/etc/cron.[hourly |daily |weekly |monthly]ディレクトリ内の実行可能ファイル(スクリプト)。

スクリプトの方が簡単であり(このようなファイルを作成、上書き、削除でき、単一のcrontabファイルの内容を変更する必要はありません)、構成管理ツールでうまく機能し、パッケージマネージャーはすでに機能しています。とにかくやって。

/etc/cron.[hourly |daily |weekly |monthly]のジョブ/スクリプトは常にrootとして実行されます。/etc/cron.d/のc​​ronスニペットは、カスタムスケジュールの設定と、同じ必須の<user>フィールドが見つかった別のユーザーとしての実行の両方を許可します/etc/crontab

64
HBruijn

覚えていると思いますが、crontab -eには、インストールする前にcrontab構文を検証するという追加の利点があり、間違えた場合はエラーになり、以前の状態に戻ります。このように、構文が間違っていても、以前は機能していたものが突然停止することはありません。 /etc/sudoersを直接編集するのではなく、visudoを実行するなどのユーティリティを使用することをお勧めします。

15
Gargravarr

これは本当にスタイルの質問です。OSによって複数のメソッドが提供されるのには理由があります。一貫性を保ち、他の誰か(またはシステムを扱っていない時間が経過した後で自分自身)を混乱させたくない場合は、混在させたり一致させたりしないでください。ホスト全体で実際にスケジュールされているタスクを確認するのが難しい場合は、傾向があります。厄介な驚きで終わる。

2
rackandboneman

特定のユーザーの権限を必要とするcronジョブを確実に追加するには、個人的に次のコマンドを使用します。

 # crontab -u <user> -e

Sudoも追加できます。

@rackandbonemanが述べたように、/ etc/cron.d /ファイルをいじる必要はありません。問題がユーザーのcronジョブに関するものである場合は、crontabcommandの機能を使用してください。

2
aesnak