incrond 脚本触发时出错

incrond 脚本触发时出错

我在 centos 7 机器上安装了 incron。

对于我的初始测试,我在表中有一个简单的条目。当文件移动到目标文件夹时,它将运行脚本。我首先做的是执行

/dir IN_MOVED_TO logger success

但这不起作用,当我将文件放入目标文件夹时,我在 /var/logs/messages 中看到一条消息,上面写着

Aug 14 23:29:27 Clone-Dev-AnalyticsAutomation gnome-session: gnome-session-binary[2329]: WARNING: Unable to inhibit system: GDBus.Error:org.freedesktop.DBus.Error.AccessDenied: Permission denied
Aug 14 23:29:32 Clone-Dev-AnalyticsAutomation journal: unable to create file '/run/user/1018/dconf/user': Permission denied.  dconf will not work properly.

我以为 incrond 是在没有 sudo 命令的情况下启动的,所以我用 sudo 命令重新启动了它,但我仍然得到相同的结果。

我跑了服务 incrond 状态 -l

Aug 14 23:13:48 Clone-Dev incrond[6875]: loading user tables
Aug 14 23:13:48 Clone-Dev incrond[6875]: loading table for user simon
Aug 14 23:13:49 Clone-Dev incrond[6875]: loading table for user analytics
Aug 14 23:13:49 Clone-Dev incrond[6875]: loading table for user root
Aug 14 23:13:49 Clone-Dev incrond[6875]: access denied on ## - events will be discarded silently
Aug 14 23:13:49 Clone-Dev incrond[6875]: cannot create watch for user root: (22) Invalid argument
Aug 14 23:13:49 Clone-Dev incrond[6875]: access denied on ## - events will be discarded silently
Aug 14 23:13:49 Clone-Dev incrond[6875]: cannot create watch for user root: (22) Invalid argument
Aug 14 23:13:49 Clone-Dev incrond[6875]: ready to process filesystem events

我不太确定发生了什么事。我觉得 incrond 正在尝试执行命令,但没有必要的权限。

答案1

问题不在于运行它的服务或用户,请更改此目录的权限

chmod 644 /run/user/1018/dconf/user

或者对于父目录。如果您从其他用户运行,甚至 777 也可以。

如果您正在使用的进程(在本例中是 gnome-session - GDBus 是我的猜测)具有显式 gui,则检查 dconf/user 下的哪个进程与您的 dir 命令冲突(在 incron 中)。并相应地禁用权限或选择否认该进程

$>pidof dconf*

$>disown --pid=<PID of conflicting process>

您不需要以 root 身份运行该服务,这很可能与 gnome 会话 GUI 运行进程时发生冲突。编辑-允许 /etc/incron.allow 中的用户能够运行 incron

像 incron 设置这样的简单 bash 是

if[ IN_CREATE_DIR /run/user/1018/dconf/user ]
then
   set /dir moved
   mailx -r "server" -s "dir moved" [email protected]
fi
/dir IN_MOVED_FROM /log success

运行这个应该足够了,尽管我不觉得

相关内容