前回はcronのログの見方について書いていきました。
今回はcron編最後になりますが、cronコマンドの仕様を変更する方法を記載していきます。
contents
- cronとは?オプションは?
- cronの設定
- cronのログを見よう
- cronコマンドの仕様を変更しよう ⇦今ここ
- cronのメール送信機能を停止しよう
実は危ないcrontabのオプション
以前cronとは?オプションは?でcrontabのオプションについて記載しました。
crontab -r
とcrontab -e
感のいい方なら気がつくと思いますが、オプションのr
とe
は隣同士のキーなんですよね。
私も昔に本番作業でやらかしたことがあって、目視で気をつけていても操作の慣れというかふとした瞬間に-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.20161006
drwxr-xr-x. 2 root root 4096 2月 22 2016 /etc/profile.d
変更していきます。
vi /etc/profile
最下層に追加します。
crontab -r do not run
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のメール機能を停止しよう
です。
新着情報
ブログランキングに参加しています。クリックして応援していただけると嬉しいです。
人気ブログランキング
にほんブログ村