LoginSignup
0
0

More than 3 years have passed since last update.

cron.logの容量が肥大化しないように、定期的にクリアさせる

Last updated at Posted at 2019-12-23

はじめに

cronで実行したコマンド(つまり、crontab -eで設定したコマンド)を、rsyslogサービスを使って、/var/log/cron.logに定期的に書き込む設定をした後、このログファイルは永遠に書き込まれて行き、容量が肥大化しないだろうかと思い、定期的に、/var/log/cron.logのファイルをクリアする処理も、cronで設定する事にした。

環境

Ubuntu 16.04.5 LTS

試した事1

単純に、ログファイルを削除しようと思い、cronに下記のコマンドをスケジュールさせる。確かに、ログファイルは削除してくれたが、rsyslogサービスを再起動しないと、ログファイルは二度と作成されない事が判明する。しかも、root権限がないと削除できない。よって、この方法は没となる。

rm /var/log/cron.log

試した事2

/var/log/cron.logファイルを残したままで、中身をクリアして、0KBの空ファイルにするも、やはり、root権限がないと書込みができない事が判明。

cp /dev/null /var/log/cron.log

cronでsudoを指定したコマンドを実行するには(vimで躓く編)

visudoを編集する事で、cronでsudoを指定したコマンドが実行できるようになる事が判明したため、やってみる。

sudo visudo

Ubuntuでは、visudoを表示すると、デフォルトで、nanoが起動するようになっているため、vimに変更します。

sudo update-alternatives --config editor

参考記事
https://qiita.com/koara-local/items/35b999631b6ab41fdc9f

自分の環境では、vim.noxと、vim.tinyの2つのvimが入っているが、下記コマンドで、vim.noxが表示されたため、vim.noxの方を選ぶ事にする。(画面では3を選択)

ls -l /etc/alternatives/vi
/etc/alternatives/vi -> /usr/bin/vim.nox

vim.noxに変更した後、再度、確かに変更された事を確認する。

sudo update-alternatives --config editor

nanoではなく、vimで表示されるようになりました。

sudo visudo

cronでsudoを指定したコマンドを実行するには(やり方を考察編)

visudoを編集するには、visudoを直接編集する方法と、visudoは触らずに、ドロップインを作成する方法と2つの方法がある。下記のコマンドで、1つのファイルと、1つのディレクトリが検索されます。visudoを編集すると、/etc/sudoersファイルが編集されるが、/etc/sudoers.dというディレクトリの配下に、編集したい行だけ追加したファイルをセットすると、sudoersファイルを触る事なく、カスタマイズが行えるというのがドロップインの仕組みらしい。ドロップインを推奨する人もいるようだが、自分は、visudoを直接編集する事にした。

ls /etc | grep sudo

参考記事
https://www.teradas.net/archives/13222/

cronでsudoを指定したコマンドを実行するには(visudoを編集する編)

参考記事
https://www.bloguchi.info/1846
https://www.crossl.net/blog/crontab/

ググると、デフォルトで、Defaults:user requirettyが記載されているので、Defaults:user !requirettyを記述して、Defaults:user requirettyを無効にして下さいとあるが、RedHat系のディストリビューションでは、Defaults:user requirettyがデフォルトで記述されているのだが、Debian系のディストリビューションでは、デフォルトで、この記載はないとある。確かに、自分の環境にはなかった。

sudo visudo

なので、この1行のみ追加する。cpコマンドのパスは、which cpで探します。

user ALL=(root)   NOPASSWD: /bin/cp

参考記事
https://orebibou.com/2017/06/sudo%E3%81%A7%E8%A6%9A%E3%81%88%E3%81%A6%E3%81%8A%E3%81%8F%E3%81%A8%E4%BE%BF%E5%88%A9%E3%81%AA%E8%A8%AD%E5%AE%9A%E3%83%BB%E4%BD%BF%E3%81%84%E6%96%B9/#Defaults

crontab -eで、テスト的に、sudo 付きのこの1行を追加する。

*/1 * * * * sudo cp /dev/null /var/log/cron.log

確かに、ファイル容量が小さくなっている事が確認できました。(sudo付のコマンドが実行された事が確認できた)

ls -l /var/log/cron.log

C'est fini :sweat_smile:

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0