解決策 1:
個人の crontab (crontab -e
) は常にその所有者として実行されます。ここで /etc/crontab
追加の必須の <user>
が含まれています 管理者が root 以外のユーザーとして実行するようにジョブを構成できるようにするフィールド。
システムの crontab を編集したり、root 用の個人的な crontab を設定したりすると、おそらく移植性が高くなります。これは、特定の Linux ディストリビューションに固有のものではなく、間違いなく人にとってより便利です。 すべてのジョブを 1 つのファイルにまとめて維持しますが、
個人的には3番目のオプションを支持します :スケジュールされたタスクごとに、いずれかをドロップします
/etc/cron.d/
のファイル cron スニペット付き- 関連する
/etc/cron.[hourly |daily |weekly |monthly]
内の実行可能ファイル (スクリプト) ディレクトリ。
これはスクリプトを作成するのが簡単で (そのようなファイルを作成/上書き/削除するだけで、単一の crontab ファイルの内容をいじる必要はありません)、構成管理ツールとうまく連携し、パッケージ マネージャーは既にそのようになっています。とにかくやっている。
/etc/cron.[hourly |daily |weekly |monthly]
のジョブ/スクリプト /etc/cron.d/
の cron スニペットは常に root として実行されます。 カスタムスケジュールの設定と、同じ必須の <user>
を持つ別のユーザーとしての実行の両方を許可します /etc/crontab
で見つかったフィールド .
解決策 2:
私が覚えている限り、crontab -e
には、インストール前に crontab 構文を検証するという追加の利点があり、間違いを犯した場合はエラーが発生し、以前のものを復元します。このように、構文を間違えても、以前は機能していたものが突然停止することはありません。 visudo
を実行するなどのユーティリティを使用するのがベストプラクティスだと思います /etc/sudoers
を編集するのではなく
解決策 3:
これは実際にはスタイルの問題です。OS によって複数の方法が提供されているのには理由があります。他の人 (または、しばらくシステムを操作していない自分自身) を混乱させたくない場合は、一貫性を保ち、混同しないでください。ホスト全体で実際にどのタスクがスケジュールされているかを確認するのが難しい場合は、その傾向があります。厄介な驚きで終わる.
解決策 4:
特定のユーザーの権限を必要とする cron ジョブを確実に追加するために、私は個人的に次のコマンドを使用します:
# crontab -u <user> -e
sudo
を追加できます
@rackandboneman が述べたように、/etc/cron.d/ ファイルをいじる必要はありません。問題が user の cron ジョブに関するものである場合は、crontab
の機能を使用してください コマンド。