ユーザー (SUSE LINUX Enterprise Server 9.4) で新しい cronjob を追加しました:
# su - XXX
$ crontab -e
そして私が追加したのはこれです:
* * * * * echo `date` >> /home/XXX/a.txt
しかし、a.txt は作成されません... root が crond を再起動したときにのみ作成されます...
質問:なぜ?
アップデート:
machine:~ # chage -l XXX
Minimum: 1
Maximum: 99999
Warning: 7
Inactive: -1
Last Change: Apr 11, 2011
Password Expires: Never
Password Inactive: Never
Account Expires: Never
machine:~ #
ユーザーまたはそのパスワードの有効期限が切れないようにします。
更新: cron バージョン:
cron-3.0.1-920.18
そして、ルート ユーザーに新しい crontab を追加しようとしました。同じです :D 新しいルート cronjobs も実行されていません。 :D「crontab -e」はCRONDなどをリロードしないようです...
答え1
上記のコードを試してみたところ、Red Hat Fedora 14 で正常に動作しました。
* * * * * echo `date` >> /home/saml/a.txt
ファイルの出力:
$ tail -f a.txt
Fri Oct 4 14:38:01 EDT 2013
Fri Oct 4 14:39:01 EDT 2013
Fri Oct 4 14:40:01 EDT 2013
試すべきこと
サービスが実行されていることを確認してください
crond
:$ sudo service --status-all |& grep crond crond (pid 1673) is running...
cron のスプール ディレクトリの設定を確認します。
$ rpm -qf $(type -P /usr/sbin/crond) cronie-1.4.8-2.fc14.x86_64 $ rpm -ql cronie | grep '/var' /var/spool/cron
ディレクトリが何であれリストします。ここでは存在と権限をチェックしています。
$ sudo ls -ld /var/spool/cron/ drwx------. 2 root root 4096 Oct 4 14:37 /var/spool/cron/ $ sudo ls -l /var/spool/cron/ total 4 -rw------- 1 root root 0 Sep 16 23:47 root -rw------- 1 saml root 42 Oct 4 14:37 saml
カーネル
cronjob は SELinux 経由で /home/XXX ディレクトリに書き込むアクセス権を持っていますか?
簡単なテストとしては、SELinux の強制を一時的に無効にして、問題が解決するかどうか確認する方法があります。
$ getenforce Disabled
有効になっている場合は無効にします。
$ sudo setenforce 0
答え2
strace crontab -e
解決しました... 方法はわかりませんが、今は動作します... ただし、私がやりたかったのは、crontab の低レベルの「操作」を確認することだけです...