
Ich habe ein einfaches Skript zum Ausführen von rclone. Es wird von der Root-Befehlszeile aus ordnungsgemäß ausgeführt. Es wird auch ordnungsgemäß ausgeführt, wenn es von einem regulären Cron-Job aufgerufen wird. Die Berechtigungen des Skripts sind auf root/root 0755 eingestellt, d. h. es ist ausführbar. (Das gilt auch für rclone.)
Die folgende Zeile ist der Incron-Job, wie er gesetzt incrontab -e
und bestätigt wurde miticrontab -l
/var/vhosts/localdir IN_ALL_EVENTS /bin/rclonescript.sh
Das Folgende ist mein Skript, das von der Befehlszeile oder einem regulären Cron-Job ausgeführt wird:
#!/bin/bash
/usr/sbin/rclone copy /var/vhosts/localdir mygoogledrive:uploadfolder
Hier ist die Ausgabe von tail -f /var/log/cron
:
Mar 16 18:45:55 localhost incrond[8215]: (root) CMD (/bin/rclonescript.sh)
Die Ausgabe sieht in Ordnung aus, aber das Skript wird nicht ausgeführt.
So sieht das Cron-Protokoll aus, wenn das Skript erfolgreich von einem Cron-Job aufgerufen wurde * * * * * /bin/rclonescript.sh
:
Mar 16 18:59:01 localhost CROND[9070]: (root) CMD (/bin/rclonescript.sh)
Das Protokoll ist praktisch dasselbe, aber der Cron-Job funktioniert. Incron nicht.
Ich habe versucht, den Pfad in meinem Skript festzulegen, indem ich zunächst Folgendes überprüft habe:
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
... und fügen Sie den Pfad dann wie folgt zum Skript hinzu:
#!/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
Wenn ich dies als Inclone-Job versuche:
/var/vhosts/anne_scan IN_ALL_EVENTS,IN_NO_LOOP /bin bash rclonescript.sh
oder
/var/vhosts/anne_scan IN_ALL_EVENTS,IN_NO_LOOP /bin rclonescript.sh
Dies führt zu einer verweigerten Berechtigung:
Mar 17 09:00:27 localhost incrond[24917]: cannot exec process: Permission denied
Antwort1
Fügen Sie sudo
vor dem Befehl Folgendes hinzu:
/var/vhosts/watcheddir IN_ALL_EVENTS,IN_NO_LOOP sudo /bin/sh /bin/yourscript.sh
Wählen Sie den Benutzer wie folgt aus:
/var/vhosts/watcheddir IN_ALL_EVENTS,IN_NO_LOOP sudo -u username /bin/sh /bin/yourscript.sh