crontabがユーザーのホームディレクトリに保存されないのはなぜですか?


35

知りたいのですが、なぜcrontabはユーザーのホームディレクトリではなく/ varに保存されるのですか?アップグレードのためにこれらのファイルを分離するのは非常に苦痛ですが、論理的な理由があると思います...

回答:


41

私が考えることができるいくつかの理由:

  • 企業環境では、何千人ものユーザーを抱えることができます。その場合、cronは、すべてのユーザーのディレクトリを1分ごとにスキャンして、crontabファイル(作成、削除、または変更されたかどうか)を確認する必要があります。
    それらを単一の場所に保持することにより、このような集中的なスキャンを行う必要がなくなります。
  • ホームディレクトリは常に利用できるとは限りません。ホームディレクトリがautofsマウントの場合、マウントされない可能性があります。cronが1分ごとにそれらをチェックすると、それらがマウントされ、非アクティブのためにアンマウントされなくなります。また、ホームディレクトリが暗号化され、ユーザーのパスワードで復号化された場合、ユーザーがログインして復号化/マウントしない限り、cronはホームディレクトリにアクセスできません。
  • ホームディレクトリはホスト間で共有される場合があります。ホームディレクトリがネットワーク共有の場合、その同じホームディレクトリが複数のホストに表示されます。ただし、cronジョブをすべての単一ホストで実行するのではなく、そのうちの1つだけにしたい場合があります。

1
+1従来、cronこれらのファイルは毎分再スキャンされませんでした。一度ロードし、シグナルでのみ再読み取りします。
goldilocks 14年

7
しかし、ポイント#3については正しいです。ウィキペディアによると、crontab もともと$ HOMEにありました。「[Bell lab devs]はUnix atコマンドをcronに組み込み、crontabファイルをユーザーのホームディレクトリ(ホスト固有ではない)から共通のホスト固有に移動しました。スプールディレクトリ...」また、crontabコマンドが作成されたときに、リロードの問題に対処した可能性があります。
goldilocks 14年

2
@Patrickまたは、プログラムutimesがスプールディレクトリパスを引数としてシステムコールを使用して、ディレクトリのmtimeを設定する場合、これはVixie cronのcrontabコマンドの動作です。
マークプロトニック14年

2
cronの初期バージョンは、crontab -eで編集しない限り、ユーザーのcrontabファイルへの変更を確実に認識しませんでした。過去にSolarisでこれに

2
Solaris 10ではcrontab -e、setuidルートであり/etc/cron.d/FIFO、ユーザーがcrontabを編集した後にメッセージを書き込みます。
マークPlotnick 14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.