SLES で crond を再起動しない限り、新しい cronjobs が無視されるのはなぜですか?

SLES で crond を再起動しない限り、新しい cronjobs が無視されるのはなぜですか?

ユーザー (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

試すべきこと

  1. サービスが実行されていることを確認してくださいcrond:

    $ sudo service --status-all |& grep crond
    crond (pid  1673) is running...
    
  2. 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
    
  3. カーネル

    cronjob は SELinux 経由で /home/XXX ディレクトリに書き込むアクセス権を持っていますか?

    簡単なテストとしては、SELinux の強制を一時的に無効にして、問題が解決するかどうか確認する方法があります。

    $ getenforce
    Disabled
    

    有効になっている場合は無効にします。

    $ sudo setenforce 0
    

答え2

strace crontab -e

解決しました... 方法はわかりませんが、今は動作します... ただし、私がやりたかったのは、crontab の低レベルの「操作」を確認することだけです...

関連情報