cronコマンドの仕様を変更しよう

前回はcronのログの見方について書いていきました。
今回はcron編最後になりますが、cronコマンドの仕様を変更する方法を記載していきます。

 

実は危ないcrontabのオプション

以前cronとは?オプションは?でcrontabのオプションについて記載しました。
crontab -rcrontab -e

感のいい方なら気がつくと思いますが、オプションのreは隣同士のキーなんですよね。
私も昔に本番作業でやらかしたことがあって、目視で気をつけていても操作の慣れというかふとした瞬間に-rを打ってしまうんですね。
そして、設定が・・・冷や汗が・・・と。

当時は設定前にバックアップを取っておいたので、大事に至りませんでしたが、バックアップがなかったらと思うとゾッとします
上記のことがあったため、crontabのオプションの設定で-rが実行された時に本来の-rの機能が実行されないように設定するようにしました。
 

まずはバックアップの仕方について

まずは
バックアップの取り方ですが、私はいつもcrontab -lの結果をリダイレクトして保存してます。
crontab -l > 任意のディレクトリ

他のやり方では、
/var/spool/cron配下にcronの設定ファイルがあるので、そのファイルをコピーするかです。
ただし、このやり方はcronディレクトリの権限がroot以外受け付けないようになってますので、rootユーザやsudoなどでバックアップの実行が必要です。

 

オプションを無効にする

さて、ここから本題です。
crontab コマンド実行時に-rを無効にしていきます。
そんなに難しい作業ではありませんので、ちょこちょこっとやっていただければと思います。

/etc/profileに対して設定を行います。
~/.bashrc~/.bash_profileに設定するのもアリですが、今回は全ユーザでcrontab -rの操作無効にしたいため、/etc/profileに設定していきます。
(もちろん/etc/profileに設定した内容をそのまま~/.bashrc~/.bash_profileに記載することで個別に設定することが可能です。)
rootユーザやsodo権限が与えられていない場合は、~/.bashrc~/.bash_profileに個別で設定してください。
rootユーザ、またはsudo権限を持つユーザで操作してください。

etcに移動します。

cd /etc/

バックアップをとります。

cp -p /etc/profile{,.date +%Y%m%d}

確認します。

ls -ld /etc/profile*
-rw-r–r–. 1 root root 1750 6月 7 2013 /etc/profile
-rw-r–r– 1 root root 1750 6月 7 2013 /etc/profile.20161006
drwxr-xr-x. 2 root root 4096 2月 22 2016 /etc/profile.d

 
変更していきます。

vi /etc/profile

最下層に追加します。

crontab -r do not run
function crontab() {
for arg in “$@”; do
if [[ $arg == -r ]]; then
echo ‘crontab -r do not run’
return 1
fi
done
command crontab “$@”
}

設定はこれで完了です。
この後すぐにcrontab -rで試したいところですが、ちょっと待って!!!
必ず再ログイン、またはユーザーをスイッチし直してください。

/etc/profile.bashrcはユーザがログインした時に読み込みます。
なので、設定してもログイン、スイッチをしない限り反映されないです。
ここ要注意です。

次はcronのメール機能を停止しようです。
 

ブログランキングに参加しています。クリックして応援していただけると嬉しいです。

人気ブログランキング
ブログランキング・にほんブログ村へ
にほんブログ村