这是我的 incrontab (托尼的 incrontab):
/home/tony/Workspace/cocoonr/ui/static/ui/img/icons/vector IN_MODIFY,IN_CREATE,IN_MOVED_TO /bin/sh /home/tony/Workspace/cocoonr/boilerplate/svg2djangohtml $@/$# /home/tony/Workspace/cocoonr/ui/templates/inc/icons/
我多次测试了它,改变了一些东西,当 incrond 作为服务运行时(使用 openrc),无法使其工作。
如果我在前台运行 incrond ( incrond -n
),那么 Tony 的 incrontab 就可以工作
如果我将 root 的 incrontab 设置为上面给出的值,即使作为服务运行它也可以工作。
我的托尼在/etc/incron.allow
:
root
tony
并且没有/etc/incron.deny
。
我什至尝试使用更简单的 incrontab:
/tmp/foo IN_ATTRIB touch /tmp/bar
结果是一样的。
如何让用户的 incrontab 正常工作?
答案1
如果 incrontab 的二进制文件(我不知道,从未使用过它)没有设置他的 SGID 位,则可能会导致这种奇怪的行为。
设置它chmod g+s /path/to/binary
(/usr/bin/incrontab,也许?)
您可以评估它是否是通过以下方式设置的:
ls -l /path/to/binary
(例子)
ls -l /usr/bin/crontab
-rwxr-s--x 1 root crontab 44336 Jun 23 18:47 /usr/bin/crontab
答案2
我遇到了类似的问题(这就是我发现这个问题的方式)。
如果以下命令使其工作,
incrontab -n
问题可能是 incron/incrond 服务未运行。检查它是否正在运行以及是否启用在启动时运行(以防系统重新启动)。
我面临的另一个问题是由于我无意中创建的无限循环。
如果您的脚本修改了 incron 正在监视的文件夹中的任何文件,它会不断触发事件,并且每个事件都会引发一个新进程(通过fork()
)。很快,该服务就无法再分叉了。在这种情况下,服务日志显示以下错误。
cannot fork process: resource temporarily unavailable
在此刻,
- 停止服务
- 更改脚本,使其不会修改监视文件夹中的文件
- 重新启动服务