
rclone を実行するための簡単なスクリプトがあります。これは、ルート コマンド ラインから適切に実行されます。また、通常の cron ジョブによって呼び出された場合も適切に実行されます。スクリプトの権限は root/root 0755 に設定されており、実行可能です (rclone も同様です)。
incrontab -e
次の行は、によって設定され、確認されたincronジョブです。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