cles::blog

cron/不慮の事故/サルベージ

crontab -r とやってしまった時の対処法
[2009/11/21] (Tips)

cronの設定を変えようと crontab -e と打とうとして、間違って crontab -r と打ってしまい、cronの設定が根こそぎぶっ飛んで参りました。
「eとrは隣同士だから不慮の事故ですよ!」という他人の言い訳は以前から良く聞いていて、心の中で「そんなことあるかよ!」と思っていましたが、まさか自分がやってしまうとは思いませんでした。まったく言い訳できません。

仕方が無いので、/var/log/cronの実行ログからcrontabをサルベージするスクリプトを書いてみました。本当は時刻の設定とかも復元できるようにしようかと思ったのですが、まぁそんなにお世話になることもないのでそのあたりは手動で実施するということにします。いちおうリストアップされるようにしました。ユニークに出力しますが、*/5みたいに綺麗に畳んだりできないので出力は結構冗長です。

$ ./cron_salvage.rb --help
Usage: cron_salvage [options]
    -f, --file CRONLOG               cron log file (default: /var/log/cron)
    -u, --user USER                  cron user (default: root)

こんな感じで、対象のログファイルとユーザーが指定できるようにしてみました。
/var/log/cronが読める必要があるので、基本的にはrootユーザーで実行する必要があります。

$ ./cron_salvage.rb
 * * * * * /usr/lib/sa/sa1 1 1
 * * * * * ionice -c3 nice -n 19 /opt/apache/htdocs/admin/AWStats69t_Jpn/wwwroot/cgi-bin/awstats.cron > /dev/null 2>&1
 * * * * * run-parts /etc/cron.daily
 * * * * * run-parts /etc/cron.hourly
 * * * * * run-parts /etc/cron.weekly

こんな感じで、crontabが復元されるので、cron.(daily|hourly|weekly)に設定されている部分など、不必要な部分を除いてやればよいと思います。まぁ、対象がrootでなければ余計なものはあまり出てこないと思いますが。

cron_salvage.rb

突貫で作ったので、やっつけ気味です。
やっぱり時、分だけリストアップするようにしました。

#!/usr/bin/ruby
require 'optparse'
require 'time'

opts = OptionParser.new
conf = Hash.new
conf[:file] = '/var/log/cron'
opts.on("-f", "--file CRONLOG", "cron log file (default: /var/log/cron)"){ |f| conf[:file] = f }
conf[:user] = 'root'
opts.on("-u", "--user USER", "cron user (default: root)"){ |u| conf[:user] = u }
opts.parse!

unless File.exist?( conf[:file] )
&n

コメントをつける
次へ:[6]麺飯菜館 じょうじょう
前へ:[4]友人のドラクエ3をピアノで弾いてみたが凄かった
[3]最新の記事一覧
IPAがまとめたSQLインジェクション対策マニュアル(03/18)
学術総合センターの食堂(03/18)
シェ・ミカワ (03/17)
REALFORCE 106(03/16)
ロジクール エニウェア マウス M905(03/16)
確定申告完了!(03/15)
Google Apps Scriptで超簡易版RSSリーダーを書いてみた(03/14)
大卒の内定率が氷河期並みに(03/13)
32bit版Windows7で有効活用できないメモリをRAM Diskにしてみた(03/12)
Thunderbirdをトラックポイントでスクロールできるようにする(03/11)


[0] cles::blog / [2] 上へ / [3] 最新の記事一覧
8556856 (W:25354 Y:4422 T:2885)

hit counter