web-dev-qa-db-ja.com

crontabファイルを/ tmpに保存しますか?

私はサーバーにsshして、いくつかの毎日のジョブ(具体的にはログアウトしてもKerberosチケットを更新し、画面内のプログラムやtmuxを引き続き実行したい場合)をcronに追加したいと考えています。だから私はcrontab -eを実行し、以下を追加します、

00 00 * * * kinit -R
00 12 * * * kinit -R

保存すると、編集者から尋ねられます。

File Name to Write: /tmp/crontab.HMpG7V 

/tmpのファイルはOSで削除できるのではないですか?特にサーバーからログアウトした後はどうなりますか?

Crontabファイルはどこに保存しますか? crontabファイルを$ HOMEまたはより良いスペースに保存できますか?

11
Tim

crontab -eは、実際のcrontabの代わりに/ tmp内のファイルを開きます。これにより、新しいcrontabにエラーがないかチェックし、実際のcrontabをそれらのエラーで上書きしないようにします。エラーがない場合は、実際のcrontabが更新されます。 crontab -e実際のcrontabに直接書き込んだだけでは、新しいcrontabの構文エラーが原因で、すべてのcronjobsが実行できなくなるリスクがあります。

sudoeditvisudovipwなどは同じ原理で動作します。

心配しないでください。実際のcrontabはディスク上の不揮発性の場所にあります。

15
jayhendren

/tmpは一時的なcrontabファイルが書き込まれる場所です。保存して終了すると、crontabは変更をシステム上の別の適切なディレクトリにコミットします(通常は/var/spool/cron、覚えているなら)。したがって、心配しないでください。オペレーティングシステムが/ tmpを削除する場合がありますが、crontabが削除されることはありません。

Crontabファイルは、ユーザーのユーザー名またはユーザーIDの下の/ var/spool/cron/crontabs /にあります。ここにあるcrontabがログインアカウントに接続されていない状況が発生する可能性があるため、/ home/userid/.crontabなどのホームディレクトリにコピーを保存して、必要に応じて簡単に復元できるようにすることをお勧めしますに。これにより、必要に応じてリビジョン管理下に置くこともできます。

ホームディレクトリが別のシステムに再配置されている場合、システム管理者がこれを考慮に入れない限り、スプールディレクトリのcrontabがそれに伴っていないことがよくあります。また、システムを再実行する必要がある場合、/ var/spoolは常にバックアップまたは復元されません。

そのため、crontabのコピーをホームディレクトリに保存することをお勧めします。

お好みのエディター(pico、vi、emacsなど)を使用して〜/ .crontabを編集し、crontabを使用して/ var/spool/crontabsに適用します。このような:

% pico ~/.crontab; crontab ~/.crontab

エイリアスが必要な場合は、代わりに実行するエイリアスを作成できます。

1
JonathanS