首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在CentOS 6.4下运行但不执行命令

在CentOS 6.4下运行但不执行命令
EN

Stack Overflow用户
提问于 2013-08-14 18:01:11
回答 1查看 10.2K关注 0票数 10

我已经从EPEL存储库安装了incron (在您问之前;是的,我还尝试下载源代码并在本地编译;相同的结果),并试图在我的CentOS 6.4 (最终)虚拟盒上设置一个进程,我已经成功地在本地Ubunto 12.04机器上完成了原型:

一些预先提供的信息:

  • SELinux设置为允许的
  • 我已经添加了我的脚本,并使用visudo调用了所有的可执行文件,以解决一些权限问题.

如果我使用sudo /path/to/my/script.sh arguments从命令行调用我的脚本,那么它的工作原理就像一种魅力。

sudo service incrond status验证incrond是否正在运行。根和myusername被添加到/etc/incron.allow中,/etc/incron.deny为空。

我的根标签是:

代码语言:javascript
复制
/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:

代码语言:javascript
复制
/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 incronyum install incronchkconfig 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结果。

  • 谢谢你修了我的垃圾格式化工作
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-16 15:26:44

好吧,答案是:

尽管有所有的文档,我可以发现声明是相反的,incrond在CentOS 6.4下运行在一个稀疏的环境中,并以cron的形式运行。Ubuntu的情况并非如此,在Ubuntu中,incron从root继承它的环境,用于系统表和根表,只有在稀疏环境中运行的用户表。当然,这意味着如果您调用一个脚本(我是),脚本需要构建它的环境,并且每件事情都必须有一个完整的路径。EVERYTHING。(嗯,除了外壳结构:p)

大量的谷歌、必应、堆栈溢出和服务器故障搜索都告诉我,cron是这样操作的,但它们似乎都表明,incron的操作方式与文档中所描述的一样,这是它在Ubuntu下所做的.

说到底,现在起作用了,耶!

  • 我想这只是为了表明:当有疑问的时候,定义环境和使用全面的路径.呃,其实就是一直这么做,省得自己头疼。

(这并不解决我在为SELinux应用incron安全策略时遇到的问题,但我稍后会在另一篇文章中对此感到担忧.)

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18238962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档