crontab -rの恐怖


WindowsのタスクスケジューラのUNIX版と言えばcron(atdとかもあった気がするけど、使ったことない)。
cronはcrontabコマンドでスケジュールの一覧を見たり、スケジュールの変更ができるんだけども、以下のコマンドを見て欲しい。

スケジュールの編集コマンド $ crontab -e スケジュールの全削除コマンド $ crontab -r

このコマンドの違いは最後の「e」と「r」しか違わない。そしてお手元のキーボードを見てもらうとわかるように、この文字は仲良く隣同士です。そう、スケジュールの編集をしようと思ってコマンドを打つ時に誤って隣の「r」なんて押して実行した日にはスケジュールが全部消えちゃいます。しかも容赦なくいきなり消えます。
まぁそんなブービートラップがcrontabに仕掛けられてるわけですよ。

つい先日、見事に引っかかったのですが。

ただ、直前に「crontab -l」やってるログが残ってたのですぐに復旧できました。けど、またやってしまうと怖いし、心臓に悪いのでなんとか間違って入力してもリカバリーできるようにしておきたい。
crontabには「-i」オプションをつけることで「-r」でスケジュールを全消去する際に「本当に消すけどいいですか?」って聞いてくるみたい。というかそういう機能あるなら、デフォルトonにしておけよ。。。
というわけでaliasを使ってcrontabを実行したときに自動で「crontab -i」になるように色々いじりました。

/etc/profile.d/crontab.shファイルを作成。
alias crontab='crontab -i'

/etc/profile.d/crontab.cshファイルを作成。
alias crontab 'crontab -i'

このファイルを作ってからログインしなおすとOK。これで間違えて「crontab -r」って入力しても、削除確認されるのでいきなりスケジュールがすっ飛ぶことはなくなる。
あとこれはbashでしか動作確認してないけどたぶんtcshとかでもOKだと思う。

どうでもいいが、俺は本来tcsh派です。スクリプトはsh(bash)だけど。

作成日:2008/08/18 03:02:54
トラックバック
TrackbackURL:このページのトラックバックの受付は終了しています。

トラックバックはありません。
コメント
1
MEGU 18Aug2008 12:48PM
なるほど。。
今度は、「削除確認」に対して、誤ってyesを実行しない
ように気をつけることが大事なんですね。。(笑)。。
(私はワリとよくやってます 爆)。
2
そうし 21Aug2008 01:42AM
> MEGUさん
そうですね、勢いに任せて「y」って入力しなければOKです(笑)
しかしこれを設定してからまだ一度も失敗していないという。。。いや、失敗してないのはいいことなんですが(^^;
3
助かりました。りんごりら 2Oct2013 10:30AM
一度深夜にcrontab -rをやってしまい,苦労したので大変ありがたい記事を見つけられて良かったです。ありがとうございます。
※スパムコメントが届くようになったためコメント投稿を中止しました。