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

Когда я пытаюсь сделать это в качестве задания inclone:

/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

Связанный контент