EPEL リポジトリから incron をインストールしました (質問する前に; はい、ソースをダウンロードしてローカルでコンパイルしようとしました; 同じ結果です)。CentOS 6.4 (最終) 仮想ボックスでプロセスをセットアップしようとしていますが、これはプロトタイプ化に成功しています。私のローカルUbunto 12.04マシンで:
前もっていくつかの情報:
- SELinux は PERMISSIVE に設定されています
- スクリプトを追加し、NOPASSWD を使用してすべての実行可能ファイルを呼び出して
visudo
、いくつかの権限の問題を回避しました...
コマンドラインからスクリプトを呼び出すとsudo /path/to/my/script.sh arguments
、魅力的に機能します。
sudo service incrond status
incrond が実行されていることを確認します。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.txt
incron
それでも: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/0
nadaの結果が生成されます。
- 私のがらくたの書式設定ジョブを修正してくれてありがとう