あなたの寝ている間もフルバックアップ可!ESXi 5.1のcron設定の方法
2016/06/16
今回はESXiでシェルスクリプトをcronで定期実行させるときの手順を紹介します。
仮想マシン(ゲストOS)を丸ごと定期バックアップを取りたいときに立ちはだかる問題だと思います。
上手く設定をすると色んなスクリプトをESXi上で自動実行できるようになります。
/var/spool/cron/root を編集?
通常のLinuxであれば、「crontab -e」や「/etc/cron.d/dailyjob」などを編集すればすぐcronに新しいシェルスクリプトを登録できるのですが、ESXiではそうはいきません。
ESXiのcronはESXiの再起動時に自動的にデフォルト設定に書き換えられてしまうので、ESXi上のcron管理ファイルである「/var/spool/cron/root」を直接編集したとしても意図した動作をしてくれません。
一般ユーザにおける「crontab」やviによる直接の編集はパーミッションの関係上できません。ESXiのrootアカウントでもパーミッションの関係で書き込みが許可されません。無理やりパーミッションを変更しても良いですが、ESXi再起動時にどのような影響が出るのか不明なのでおすすめできません。
デフォルト設定を書き直す
ESXiにおけるcronの変更方法は、OSに保存されているcronファイルのデフォルト設定を自分で書き直し、上書き保存することで実現できます。
やり方(ESXi へssh ログイン後)
- /var/spool/cron/root を作業ディレクトリへコピー
- 通常のcron書式に合わせて実行させたいシェルスクリプトを追記
- /var/spool/cron/root として上書き保存(またはESXiから削除して保存でも可)
- cat /var/spool/cron/root で正しく記載されているか確認
- ESXi を再起動後、もう一度を確認し内容が変更されていないことを確認
番外編・cron書式
たまにド忘れすることがあるのでメモ
分 時 日 月 曜日 ユーザ 実行コマンド
0 5 * * * root /usr/bin/shell.sh
項目 | 有効範囲 |
分 | 0~59 |
時 | 0~23 |
日 | 1~31 |
月 | 1~12 または jan~decまでの英語表記 |
曜日 | 0~7 ※0と7は日曜 または sun~satまでの英語表記 |
ユーザ名 | 実行ユーザ名 |
コマンド | 有効なコマンドを記述。例:/bin/catなど |