0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

cronを間違って消さないようにするには愛が必要

Posted at

はじめに

初めて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_profilealias crontab='crontab -i'を追記する
(ユーザーごとに設定が必要)
何が起きても責任持てませんので、テストしてください。

最後に

cronにドキドキする時間を減らしましょう。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?