Incron 不会执行脚本,但 Cron 会执行,权限被拒绝

Incron 不会执行脚本,但 Cron 会执行,权限被拒绝

我有一个简单的脚本来运行 rclone。它从 root 命令行正确执行。当由常规 cron 作业调用时,它也能正确执行。脚本的权限设置为 root/root 0755,即它是可执行的。(rclone 也是如此。)

以下行是 incron 作业,由以下人员设置incrontab -e并确认:icrontab -l

/var/vhosts/localdir IN_ALL_EVENTS /bin/rclonescript.sh

以下是我从命令行或常规 cron 作业运行的脚本:

#!/bin/bash
/usr/sbin/rclone copy /var/vhosts/localdir mygoogledrive:uploadfolder

以下是 的输出tail -f /var/log/cron

Mar 16 18:45:55 localhost incrond[8215]: (root) CMD (/bin/rclonescript.sh)

输出看起来没问题,但是脚本没有运行。

当脚本从 cron 作业成功调用时,cron 日志如下所示* * * * * /bin/rclonescript.sh

Mar 16 18:59:01 localhost CROND[9070]: (root) CMD (/bin/rclonescript.sh)

日志实际上是相同的,但是 cron 作业可以工作。Incron 则不行。

我尝试在脚本中设置路径,首先检查:

[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

...然后像这样添加脚本路径:

#!/bin/bash
Path=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin   
/usr/sbin/rclone copy /var/vhosts/localdir mygoogledrive:uploadfolder

当我尝试将其作为克隆作业时:

/var/vhosts/anne_scan IN_ALL_EVENTS,IN_NO_LOOP /bin bash rclonescript.sh

或者

/var/vhosts/anne_scan IN_ALL_EVENTS,IN_NO_LOOP /bin rclonescript.sh

这导致权限被拒绝:

Mar 17 09:00:27 localhost incrond[24917]: cannot exec process: Permission denied

答案1

sudo在命令前添加,如下所示:

/var/vhosts/watcheddir IN_ALL_EVENTS,IN_NO_LOOP sudo /bin/sh /bin/yourscript.sh

像这样选择用户:

/var/vhosts/watcheddir IN_ALL_EVENTS,IN_NO_LOOP sudo -u username /bin/sh /bin/yourscript.sh

相关内容