incron 无法运行 bash 脚本

incron 无法运行 bash 脚本

我已经在 Ubuntu 服务器 16.04 上安装并配置了 incron。现在我想监视文件是否添加到特定文件夹。这很有效,因为当我有

incrontab -l

/var/www/html/uploads IN_ATTRIB touch /home/incronuser/test.txt

当文件添加到上传文件夹时,会在用户主目录中创建 test.txt 文件。

此外,如果我回显某些内容而不是进行触摸,在这两种情况下,我都会看到incron中的活动/var/log/syslog。这样一切都按预期进行。

但是现在我想在文件添加到 uploads 文件夹时运行一个 bash 脚本。当创建 incron 作业的同一用户执行以下操作时,此脚本可以正常工作:

~$ bash /home/incronuser/myscript.sh

它运行良好并且脚本执行了它应该做的事情。

现在我改变我的 incron 作业以在触发时运行该脚本:

incrontab -e 
/var/www/html/uploads IN_ATTRIB /home/incronuser/myscript.sh

但我无论如何都无法让它发挥作用。根据这里和互联网上其他问答,我尝试过以各种形式使用引号,尝试过在行中使用 bash 命令,crontab但到目前为止都失败了。例如:

/var/www/html/uploads IN_ATTRIB bash /home/incronuser/myscript.sh

/var/www/html/uploads IN_ATTRIB /bin/bash /home/incronuser/myscript.sh

"/var/www/html/uploads IN_ATTRIB /home/incronuser/myscript.sh"

/var/www/html/uploads IN_ATTRIB "/home/incronuser/myscript.sh"

/var/www/html/uploads IN_ATTRIB sudo bash -c "/home/incronuser/myscript.sh"

我必须补充一点,在所有这些情况下,我确实看到了incron工作被调用syslog,只是什么也没发生。我不太确定在哪里可以找到更详细的日志来了解出了什么问题。如果能对此有所了解就太好了。

答案1

好吧,我已经搞清楚了。我只会在这里留下我的解决方案,以便其他遇到此问题的人(incron 的文档记录不如 cron 好,而且存在根本区别)。

我犯的第一个错误是我构建 incrontab 的方式。这应该是:

/var/www/html/uploads IN_ATTRIB /bin/bash /home/incronuser/myscript.sh

其次,我没有以正确的用户身份执行它。首先需要将需要插入数据库的文件移动到 /var/lib/mysql-files,并且只有 root 才能访问那里。因此,incron 作业也必须以 root 身份创建。

相关内容