我已经从EPEL存储库安装了incron (在您问之前;是的,我还尝试下载源代码并在本地编译;相同的结果),并试图在我的CentOS 6.4 (最终)虚拟盒上设置一个进程,我已经成功地在本地Ubunto 12.04机器上完成了原型:
一些预先提供的信息:
visudo调用了所有的可执行文件,以解决一些权限问题.如果我使用sudo /path/to/my/script.sh arguments从命令行调用我的脚本,那么它的工作原理就像一种魅力。
sudo service incrond status验证incrond是否正在运行。根和myusername被添加到/etc/incron.allow中,/etc/incron.deny为空。
我的根标签是:
/path/to/dropfolder/ IN_CLOSE_WRITE sudo /path/to/my/script.sh $@/$#/path/to/dropfolder/中的事件完全不会导致任何事情发生。没有生成日志,没有消息,也没有对文件夹中的文件执行任何操作。
因此,我已经进行了研究:有人建议cron运行在最小的环境中,要执行复杂的命令/脚本,您可能必须在cron命令的开头执行.bashrc和/或导出路径。
注意:我找不到任何文档支持incron也在一个最小的环境中运行,但是作为我的google(和宾!)没有得到与incron直接相关的任何有用的结果--我想,我会尝试的!
编辑:文档表示从系统表或根运行的incron从其主机环境中获取env,因此只有由非root用户执行的incron才需要任何类型的env或路径篡改。
所以…根目录的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确保脚本是可执行的。
所以incrond确实想做点什么,但是我在任何地方都没有输出.即使是一个简单的echo > /dev/pts/0也会产生nada结果。
发布于 2013-08-16 15:26:44
好吧,答案是:
尽管有所有的文档,我可以发现声明是相反的,incrond在CentOS 6.4下运行在一个稀疏的环境中,并以cron的形式运行。Ubuntu的情况并非如此,在Ubuntu中,incron从root继承它的环境,用于系统表和根表,只有在稀疏环境中运行的用户表。当然,这意味着如果您调用一个脚本(我是),脚本需要构建它的环境,并且每件事情都必须有一个完整的路径。EVERYTHING。(嗯,除了外壳结构:p)
大量的谷歌、必应、堆栈溢出和服务器故障搜索都告诉我,cron是这样操作的,但它们似乎都表明,incron的操作方式与文档中所描述的一样,这是它在Ubuntu下所做的.
说到底,现在起作用了,耶!
(这并不解决我在为SELinux应用incron安全策略时遇到的问题,但我稍后会在另一篇文章中对此感到担忧.)
https://stackoverflow.com/questions/18238962
复制相似问题