あれ『-bash: crontab: command not found コマンドが見つかりません』ってエエエ!なんで!?

linux
photo credit: LaserGuided via photopin cc

cronはどこにいったの…?

あれあれー?と思いながら書いてます。

[code]
[root ~]# crontab -e
-bash: crontab: コマンドが見つかりません
[/code]

以前は存在してたコマンドなのに消えちゃったようです…?
なんで消えたのかは定かでは無いのですが、しばらくやっていなかった yum update とかしたのが影響かしら…?
それとも、何かしらのタイミングでコマンドだけが消えたのか…?
原因はよくわかって居ませんが、以前かけてた事は確かだ…。ううむ。

ちなみに現在のOS

[code]
[root etc]# cat /etc/redhat-release
CentOS release 6.4 (Final)
[/code]

とりあえず解決方法を探す旅へ…

まあ、なんていいうかとりあえずググれってばっちゃが言ってたんで、その通り行動。
『centos cron 消える』『centos cron 出ない』と調べてみても特に同じような現象は見つからない…
『centos 6.3 crontab』と調べてみると…
CentOS 6.3 に crontab をインストール | 温故知新 linux実践講座
というサイトが有りましたので、ああ、yumコマンド でインストールされてるかどうかをチェックしようと思いチェック!
すると…見事、インストールされていない状況でした…。
この状況もよくわかっていなかったのだが、installすればなんとかなると思ってインストール!

yum install crontab

とりあえず、cronが無いんだから、cronをインストールするべ!

[code]
[root etc]# yum install crontabs
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
* epel: ftp.iij.ad.jp
* rpmforge: mirror.fairway.ne.jp
Setting up Install Process
Resolving Dependencies
–> Running transaction check
—> Package cronie.x86_64 0:1.4.4-7.el6 will be installed
–> Processing Dependency: dailyjobs for package: cronie-1.4.4-7.el6.x86_64
—> Package crontabs.noarch 0:1.10-33.el6 will be installed
–> Running transaction check
—> Package cronie-anacron.x86_64 0:1.4.4-7.el6 will be installed
–> Finished Dependency Resolution

Dependencies Resolved

==================================================================================================
Package Arch Version Repository Size
==================================================================================================
Installing:
cronie x86_64 1.4.4-7.el6 base 70 k
crontabs noarch 1.10-33.el6 base 10 k
Installing for dependencies:
cronie-anacron x86_64 1.4.4-7.el6 base 29 k

Transaction Summary
==================================================================================================
Install 3 Package(s)

Total download size: 110 k
Installed size: 211 k
Is this ok [y/N]: y
Downloading Packages:
(1/3): cronie-1.4.4-7.el6.x86_64.rpm | 70 kB 00:00
(2/3): cronie-anacron-1.4.4-7.el6.x86_64.rpm | 29 kB 00:00
(3/3): crontabs-1.10-33.el6.noarch.rpm | 10 kB 00:00
————————————————————————————————–
Total 2.0 MB/s | 110 kB 00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : cronie-1.4.4-7.el6.x86_64 1/3
Installing : crontabs-1.10-33.el6.noarch 2/3
Installing : cronie-anacron-1.4.4-7.el6.x86_64 3/3
Verifying : crontabs-1.10-33.el6.noarch 1/3
Verifying : cronie-1.4.4-7.el6.x86_64 2/3
Verifying : cronie-anacron-1.4.4-7.el6.x86_64 3/3

Installed:
cronie.x86_64 0:1.4.4-7.el6 crontabs.noarch 0:1.10-33.el6

Dependency Installed:
cronie-anacron.x86_64 0:1.4.4-7.el6

Complete!
[/code]

その後『crontab -e』を実行してみると、以前記入してたものが表示されました…。
ふむ、やはり前は存在していたという事ですね…なぜ消えたのだ…。
原因は今後探せたら探してみる…orz

CentOS6なら要注意?

crontabで設定した時間通りにcronが動いてくれません。
/var/log/cron を見ているとわかるのですが、以下のようにログに書かれていて、わざとズレて実行されるように仕様が変わっています。

[code]
run-parts(/etc/cron.hourly)[2031]: starting 0anacron
anacron[2042]: Anacron started on 2013-07-07
run-parts(/etc/cron.hourly)[2044]: finished 0anacron
anacron[2042]: Will run job `cron.daily’ in 37 min.
anacron[2042]: Will run job `cron.weekly’ in 57 min.
anacron[2042]: Will run job `cron.monthly’ in 77 min.
anacron[2042]: Jobs will be executed sequentially
[/code]

この状況を解決するには参照サイトに書かれているように以下の通り、別のパッケージをインストールしてあげると良いそうです。

[code]
yum -y install cronie-noanacron
yum -y remove cronie-anacron
[/code]

理由としてはこのように書かれています。

RHEL6 (互換である Scientific Linux 6 や CentOS 6 も同様) から、 デフォルトでは「cronie-anacron」というパッケージがインストールされ、 ジョブの定期実行は anacron で制御されるようになっています。 このため、cron のように決まりきった時間にジョブが実行されるわけではなく、 設定された時間内(3時-22時)に、ランダムに設定された時間分(0分-45分)待って実行されます。

これを従来通りの cron の設定に戻したければ、以下のように従来通りの cron 設定になっている「cronie-noanacron」をインストールしてください。 ただし、仮想環境においては、1台のマシン上で複数の仮想マシンが一斉に同じ時間に定期ジョブを実行する負荷も考える必要があるので、 仮想環境にしている場合は、各仮想マシンの cron 設定を手動で変更して時間をずらすか、 または、台数が多ければ一つ一つ設定を変えるのも大変なので anacron 制御のままにしておいた方がよいです。

CentOS 6.3 に crontab をインストール | 温故知新 linux実践講座

参考

コメントを残す

メールアドレスが公開されることはありません。