ルートとして実行するときに、さまざまなタスクを実行してWebアプリケーションを実行するDebian(9 / stretch)サーバーを準備するシェルスクリプトがあります。このスクリプトが実行することの1つは、heredocテキストを使用してcrontabroot
ファイルにcronjob行を追加することです。www-data
/var/spool/cron/crontabs/
cat
ファイルに追加された各cronjobは、スクリプトのアンインストール機能を使用するときに使用できるようにタグコメントに囲まれていますsed
。
crontab -l
これはうまくいくようです。しかし、実際のcrontabファイルを直接調べるときはまだ存在しますが、crontabを通して見ると、各crontabの最初の3行が表示されないことがわかりました。いくつかの研究では、これがDebianのcrontab実装における意図的な機能の副作用であることを示唆しています。crontabの最初の3行を隠すなぜなら、この行は3行の「このファイルを編集しないでください」ヘッダーであると予想しているからです。
ただし、以前に存在していなかったcrontabファイルに追加すると、そのヘッダーが存在しないため生成されません。これが、crontabの実際の最初の3行が隠されている理由です。
とにかく、おそらくcrontabファイルに直接書き込むことは正しいことをしていません。システムが良好な状態を維持するようにcrontabに自動的に追加または削除できるようにスクリプトを更新するにはどうすればよいですか?
(マンページでCRONTAB_NOHEADER
3行を隠さないようにNに設定できると読んでいます。)
答え1
別のcrontabを操作する代わりに、ディレクトリベースのディレクトリに/etc/cron*
crontab機能の一部を配置することを選択します。
必要なのは、/etc/cron*
スニペットを実行する必要がある/必要なディレクトリからファイルを作成/削除することで、管理が簡単です。
$ ls -ld /etc/cron*
-rw-------. 1 root root 0 May 2 10:54 /etc/cron.allow
drwxr-xr-x. 2 root root 4096 Jul 28 14:56 /etc/cron.d
drw-------. 2 root root 4096 Jul 28 14:56 /etc/cron.daily
-rw------- 1 root root 0 Apr 10 21:48 /etc/cron.deny
drw-------. 2 root root 4096 Jul 28 14:55 /etc/cron.hourly
drw-------. 2 root root 4096 Jun 9 2014 /etc/cron.monthly
-rw-------. 1 root root 451 Jun 9 2014 /etc/crontab
drw-------. 2 root root 4096 Jun 9 2014 /etc/cron.weekly