はじめに
初めてQiitaで記事を書きます。
Qiitaに記事を書いていただいている皆様にはいつもお世話になっています。ありがとうございます。
概要
Linuxでcronを触っているとcronを消しそうになったことがあると思います。
(消しちゃったこともある方もいるかも...)
消しちゃったときにどうするか
というよりは消さないようにするにはどうすれば
という内容です。
※消しちゃったときにどうするか
は調べたら先人が対策を様々な方法を考えていらっしゃるので、そちらを調べてみてください
結論
crontabコマンドには必ず-i
オプションを付けた状態にしておく。
(削除の予防する)
背景
cron
を編集するとき、
crontab -e
と直接やることも多々あるかと思います。
(最近は直接編集したらあかん、もしくは直接サーバーに入るのがありえない、という話も上がっていますが、そんな素晴らしい環境ばかりではありませんので)
ドキドキするのが、オプション指定のときの-e
やるとき。
キーボードの右隣にこいつがいるんです。r
御存知の通りcrontab -r
ってやるとcron全部消えちゃうんですよね。
そもそも、なんで事故ってください、というキー配列のオプション指定にしてるのよ、という気持ちもありますが現実はそうなんです。
対策
1. crontabのオプションを調べる
linuxのコマンドラインでman crontab
(cronの説明書き)と実行すると英語でこんなのが書いてあります。
-i This option modifies the -r option to prompt the user for a
'y/Y' response before actually removing the crontab.
英語はちょっとわからないのですが、
-iオプション -rオプションでcron消す前にyとかYとかで答えないと消さないようにするよ
みたいなことが書いてあります。
こいつは使える。
ちょっとやってみますね。(間違っても本番環境でテストしないこと)
$ crontab -ir
crontab: really delete hogehoge's crontab?
hogehoge部分はユーザー名です。
このあと「やっべ」とctrl+c
で抜けてもらえればセーフです。
y
とかY
とか押したらcronが消えますが、そこまでやるのであればもう知りません。
毎度
crontab -ie
って押せばOK。
間違えて右隣の恐ろしいキーを押しても、
crontab -ir
で聞いてくれるのでセーフ。
でもちょっとスマートじゃない。というかめんどい。
そもそも-i
なんてついてて困ることは無さそうだし。
(-l
のときは-il
と書いても「ほんとに消していいかい?」と聞かれることはありません)
2. エイリアス
Linuxにはエイリアス(alias)っていうのがあります。
詳しくは別のサイトで調べてください。
すぐローマ字読みしてしまい、野球選手を思い出してしまうのですが(自分は神奈川の球団のファンです)
今回の例だと
alias crontab='crontab -i'
と実行すると
crontabって実行したらcrontab -iをやったことになるぜ
と宣言できたことになります。
そしたら、こいつをどこに宣言するか。
3. ~/.bash_profileに設定
自分は~/.bash_profile
に設定しています。
ここに書くと、sshで真っ黒画面にログインするときに勝手に実行してくれます。
~/.bashrc
ってやつもいて、ここに書いても勝手に実行してくれます。
どっちに書くかは個人の判断によります。
自分が~/.bash_profile
に書いた理由は次のとおりです。
man bash
(bashの説明書き)と実行すると
~/.bash_profile
The personal initialization file, executed for login shells
~/.bashrc
The individual per-interactive-shell startup file
って書いてあります。翻訳はしないです。
今回は
- サーバーにsshログインするときに適用したい
- それ以降は別に適用する必要もない
ということで~/.bash_profile
に追記することにしました。
まとめ
やることは以下です。
~/.bash_profile
にalias crontab='crontab -i'
を追記する
(ユーザーごとに設定が必要)
何が起きても責任持てませんので、テストしてください。
最後に
cronにドキドキする時間を減らしましょう。