Adicione sudo
antes do comando, assim:
/var/vhosts/watcheddir IN_ALL_EVENTS,IN_NO_LOOP sudo /bin/sh /bin/yourscript.sh
Selecione o usuário assim:
/var/vhosts/watcheddir IN_ALL_EVENTS,IN_NO_LOOP sudo -u username /bin/sh /bin/yourscript.sh
Eu tenho um script simples para executar o rclone. Ele é executado corretamente a partir da linha de comando da raiz. Ele também é executado corretamente quando chamado por uma tarefa cron normal. As permissões do script são definidas como root / root 0755, ou seja, são executáveis. (Então é o rclone.)
A linha a seguir é a tarefa incron como definida por incrontab -e
e confirmada com icrontab -l
/var/vhosts/localdir IN_ALL_EVENTS /bin/rclonescript.sh
O seguinte é o meu script que é executado a partir da linha de comando ou de uma tarefa cron normal:
#!/bin/bash
/usr/sbin/rclone copy /var/vhosts/localdir mygoogledrive:uploadfolder
Aqui está a saída de tail -f /var/log/cron
:
Mar 16 18:45:55 localhost incrond[8215]: (root) CMD (/bin/rclonescript.sh)
A saída parece bem, mas o script não é executado.
É assim que o log do cron parece quando o script é chamado com sucesso de uma tarefa agendada * * * * * /bin/rclonescript.sh
:
Mar 16 18:59:01 localhost CROND[9070]: (root) CMD (/bin/rclonescript.sh)
O log é praticamente o mesmo, mas a tarefa cron funciona. O Incron não.
Eu tentei definir o caminho no meu script, primeiro verificando:
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
... então adicionando o caminho para o script assim:
#!/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
Quando eu tento isso como o trabalho inclone:
/var/vhosts/anne_scan IN_ALL_EVENTS,IN_NO_LOOP /bin bash rclonescript.sh
ou
/var/vhosts/anne_scan IN_ALL_EVENTS,IN_NO_LOOP /bin rclonescript.sh
Isso resulta em permissão negada:
Mar 17 09:00:27 localhost incrond[24917]: cannot exec process: Permission denied
Adicione sudo
antes do comando, assim:
/var/vhosts/watcheddir IN_ALL_EVENTS,IN_NO_LOOP sudo /bin/sh /bin/yourscript.sh
Selecione o usuário assim:
/var/vhosts/watcheddir IN_ALL_EVENTS,IN_NO_LOOP sudo -u username /bin/sh /bin/yourscript.sh