前回は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 runfor 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のメール機能を停止しようです。
新着情報
ブログランキングに参加しています。クリックして応援していただけると嬉しいです。

人気ブログランキング
![]()
にほんブログ村