一般ユーザ用crontabファイルは直接上書きしても実行されるか?
/etc/crontabは、エディタで書き換えたり、mv(cp)で置き換えたりしてもきちんと動く。では、/var/spool/cron/[user name] のファイルはどうか?のテスト
前提みたいなもの。
- Chefで直接
/var/spool/cron/batch_user
とか置けたら楽かな-と。
(いやたぶん/etc/crontabを直すことになるんだろうけど。)
- 環境は CentOS6.2
- ユーザ名はrx7fcとする
テスト
1. 適当に実行用のファイルを作る
/home/rx7fc/tmp/c.sh
中身は
#!/bin/sh touch /home/rx7fc/tmp/t.txt
という感じ
2. そのまま実行してみる
[rx7fc tmp]$ /home/rx7fc/tmp/c.sh [rx7fc tmp]$ ll /home/rx7fc/tmp/ -rw-rw-r-- 1 rx7fc rx7fc 0 4月 19 14:39 2012 t.txt
きちんとできてる
3. 全く実行されないはずのcrontabのダミーファイルを作る
cronfile.dummy
0 0 1 1 * ~/c.sh
4. ダミーファイルをrx7fcユーザで登録
[rx7fc tmp]$ crontab cronfile.dummy [rx7fc tmp]$ crontab -l 0 0 1 1 * ~/tmp/c.sh
sudoして一般ユーザのcrontabファイルがどうなっているか確認する
[root ~]# ll /var/spool/cron/rx7fc -rw------- 1 rx7fc rx7fc 21 4月 19 14:46 2012 /var/spool/cron/rx7fc [root ~]# cat /var/spool/cron/rx7fc 0 0 1 1 * ~/tmp/c.sh
5. 実行用のcrontabのファイルを作る
数分後に実行されるファイルを作る
[rx7fc tmp]$ date 2012年 4月 19日 木曜日 14:50:01 JST
cronfileを作る
55 * * * * ~/tmp/c.sh
権限確認
[rx7fc tmp]$ ll -rw-rw-r-- 1 rx7fc rx7fc 22 4月 19 14:50 2012 cronfile
一応diffしてみる(rootで)
[root@localhost rx7fc]# diff /home/rx7fc/tmp/cronfile /var/spool/cron/rx7fc 1c1 < 55 * * * * ~/tmp/c.sh --- > 0 0 1 1 * ~/tmp/c.sh
6. 大丈夫そうなので上書き&中身確認
[root rx7fc]# cp -p /home/rx7fc/tmp/cronfile /var/spool/cron/rx7fc cp: `/var/spool/cron/rx7fc' を上書きしてもよろしいですか(yes/no)? yes [root rx7fc]# ll /var/spool/cron/rx7fc -rw-rw-r-- 1 rx7fc rx7fc 22 4月 19 14:50 2012 /var/spool/cron/rx7fc [root rx7fc]# cat /var/spool/cron/rx7fc 55 * * * * ~/tmp/c.sh [root rx7fc]#
7. 55分まで待つ
8. できてない。
[rx7fc tmp]$ pwd /home/rx7fc/tmp [rx7fc tmp]$ date 2012年 4月 19日 木曜日 14:55:29 JST [rx7fc tmp]$ ll 合計 16 -rwxrwxr-x 1 rx7fc rx7fc 41 4月 19 14:39 2012 c.sh -rw-rw-r-- 1 rx7fc rx7fc 22 4月 19 14:50 2012 cronfile -rw-rw-r-- 1 rx7fc rx7fc 21 4月 19 14:31 2012 cronfile.dummy [rx7fc tmp]$
9. 追試
59分に設定し、普通にcrontabで登録する
[rx7fc tmp]$ emacs cronfile [rx7fc tmp]$ crontab cronfile [rx7fc tmp]$ crontab -l 59 * * * * ~/tmp/c.sh
[rx7fc tmp]$ ll 合計 16 -rwxrwxr-x 1 fortune fortune 41 4月 19 14:39 2012 c.sh -rw-rw-r-- 1 fortune fortune 21 4月 19 15:00 2012 cronfile -rw-rw-r-- 1 fortune fortune 17 4月 19 14:31 2012 cronfile.dummy -rw-r--r-- 1 fortune fortune 0 4月 19 14:59 2012 t.txt
できている。
10. 結論
/etc/crontabと違って、直接いじってもダメっぽい