我已经从EPEL存储库安装了incron(0.5.9)(在你问之前;是的,我也尝试下载源代码并在本地编译(0.5.10);相同的结果)并试图在我的CentOS 6.4上设置一个进程(最终)我在我的本地Ubuntu 12.04机器上成功制作原型的虚拟盒子(包括incron的过程在Ubuntu下完美运行):
预先提供的一些信息:
> SELinux设置为PERMISSIVE(我也试过DISABLED,它似乎没有任何区别!)
>我已经使用visudo向NOPASSWD添加了我的脚本并调用了可执行文件以解决一些权限问题…
>我试图在http://blog.siphos.be/2013/05/a-selinux-policy-for-incron-finishing-up/这里描述的应用政策,但我一直在努力
libsepol.policydb_read:policydb幻数0x696c6f70与预期幻数0xf97cff8c或0xf97cff8d不匹配
semodule_package:从incron.te读取策略模块时出错
当我尝试使用semodule_package时
>我试图在脚本本身和预脚本caller.sh中定义环境,通过这样做我能够env> /tmp/envfile.txt表示脚本正在sudo env的克隆中运行(正如我的意图)但是我仍然没有得到我的脚本的输出,无论是它应该对它的输入文件做的工作还是其中的任何一个日志…
>它必须是权限吗? (我距离在根文件系统上执行chmod -r 777还有一天的时间;))
>在Ubuntu 12.04下,执行sudo incrotab -e并输入/ tmp / IN_CREATE,IN_NO_LOOP env>的简单操作. /home/username/envfile.txt显示incron已经在root / sudo环境中运行,正如incron文档所暗示的那样.
>这是所有与SELinux相关的东西,还是CentOS中还有其他东西让这么难?
如果我使用sudo /path/to/my/script.sh参数从命令行调用我的脚本,它就像一个魅力.
或者就此而言,如果我调用caller.sh它一切正常,但是当caller.sh由incrond调用时,它甚至不能env> / dev / pts / 0来自它. (虽然我可以env> /tmp/envfile.txt
sudo service incrond status验证incrond正在运行. root和myusername被添加到/etc/incron.allow,/etc/incron.deny为空.
以下是不推荐使用的,请参阅上面的要点,但请阅读背景故事和扩展……
我对root的incrotab是:
/path/to/dropfolder/ IN_CLOSE_WRITE sudo /path/to/my/script.sh $@/$#
/ path / to / dropfolder /中的事件导致NOTHING有用.日志在/ var / log / cron中生成,没有消息,文件夹中的文件不会发生任何操作.
所以我研究过:有人建议cron在最小的环境中运行,并且要执行复杂的命令/脚本,你可能必须执行.bashrc和/或在cron命令的开头导出你的PATH.
编辑:文档表明从系统表或root运行的incron从其主机环境中获取env,因此只有非root用户执行的incron应该需要任何类型的env或PATH fiddling
所以… incrontab for root:
/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 $@/$#"
没有骰子……试过&&代替 ; =没有骰子.如果你能想到上面的变化,我可能已经尝试过了……
所以,让我们尝试一点redecond -R /usr/sbin / incrond / etc / incron *动作!
嗯,也没有变化.
service incrond stop然后是service incrond start然后service incrond restart … nope,nope和nope.
严厉的措施:yum删除incron和yum install incron,chkconfig incrond on然后好的措施sudo重启!
怎么样的’触摸./autorelabel和重启?不!
没有.
我甚至没有得到任何来自/ tmp / IN_ALL_EVENTS echo boo> > /home/myusername/boofile.txt,因此我甚至无法做一个env> envfile.txt检查incron是否在稀疏环境中运行…(参见上面的注释)
然而:服务incrond状态yield incrond(pid xxxx)正在运行…
进一步检查/ var / log / cron产生如下结果:8月14日15:05:30 hostname incrond [1584]