EPEL リポジトリから incron をインストールしました (質問する前に; はい、ソースをダウンロードしてローカルでコンパイルしようとしました; 同じ結果です)。CentOS 6.4 (最終) 仮想ボックスでプロセスをセットアップしようとしていますが、これはプロトタイプ化に成功しています。私のローカルUbunto 12.04マシンで:
前もっていくつかの情報:
- SELinux は PERMISSIVE に設定されています
- スクリプトを追加し、NOPASSWD を使用してすべての実行可能ファイルを呼び出して
visudo、いくつかの権限の問題を回避しました...
コマンドラインからスクリプトを呼び出すとsudo /path/to/my/script.sh arguments、魅力的に機能します。
sudo service incrond statusincrond が実行されていることを確認します。root と myusername が に追加され/etc/incron.allow、/etc/incron.deny空です。
ルートの私の incrotab は次のとおりです。
/path/to/dropfolder/ IN_CLOSE_WRITE sudo /path/to/my/script.sh $@/$#
イベントの/path/to/dropfolder/結果、まったく何も起こりません。フォルダー内のファイルに対して、ログは生成されず、メッセージもアクションも発生しません。
だから私は調査しcronました:最小限の環境で実行され、複雑なコマンド/スクリプトを実行する.bashrcには、cronコマンドの先頭でPATHを実行および/またはエクスポートする必要がある場合があることが示唆されました。
注:最小限の環境でも動作することをサポートするドキュメントは見つかりませんが、私の google-fu (および bing-fu!) は、私が考えた WTH にincron直接関連する有用な結果をもたらさなかったので、試してみます!incron
編集:ドキュメントはincron、システムテーブルから実行するか、ルートがホスト環境からenvを取得することを示しているため、incronルート以外のユーザーによって実行される場合にのみ、何らかの種類のenvまたはPATHの調整が必要です
つまり… root の incrontab:
/path/to/dropfolder IN_CLOSE_WRITE . /home/myusername/.bashrc; export PATH=$PATH:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin; sudo /path/to/my/script.sh $@/$#"
ダイスなし…&&代わりに試みた;=ダイスなし。上記のバリエーションを思いつくことができれば、私はおそらくそれを試しました…
では、ちょっとしたrestorecond -R /usr/sbin/incrond /etc/incron*行動をしてみましょう!うーん、そこも変わらない。
service incrond stop続いてservice incrond start、そしてservice incrond restart…いいえ、いいえ、そしていいえ。
抜本的な対策:yum remove incronとyum install incron、chkconfig incrond onそして適切な対策としてsudo reboot!
何もない。
からは何も得られないため、 が疎な環境で実行されているかどうかを確認する/tmp/ IN_ALL_EVENTS echo boo>>/home/myusername/boofile.txtことさえできません… (上記の注を参照)env>>envfile.txtincron
それでも:service incrond status利回りincrond (pid xxxx) is running...
私は何が欠けていますか?それは大きくて明白でなければならず、誰かが私をすぐに馬鹿だと感じさせてくれることを願っています!
さらに検査すると、次の/var/log/cronような結果が得られます: Aug 14 15:05:30 hostname incrond[1584]: (root) CMD (sudo /path/to/DropFolder/script/subfolder/script-Beta-1.sh /home/username/DropFolder/testfile.file)-yes I made sure my script was executable..
したがって、incrond は確かに何かを実行しようとしていますが、どこにも出力が得られません...単純な結果でもecho > /dev/pts/0nadaの結果が生成されます。
- 私のがらくたの書式設定ジョブを修正してくれてありがとう