
rclone을 실행하는 간단한 스크립트가 있습니다. 루트 명령줄에서 제대로 실행됩니다. 또한 일반 크론 작업에 의해 호출될 때 제대로 실행됩니다. 스크립트의 권한은 루트/루트 0755로 설정됩니다. 즉, 실행 가능합니다. (rclone도 마찬가지입니다.)
다음 줄은 에서 설정 incrontab -e
하고 확인한 incron 작업입니다.icrontab -l
/var/vhosts/localdir IN_ALL_EVENTS /bin/rclonescript.sh
다음은 명령줄이나 일반 크론 작업에서 실행되는 스크립트입니다.
#!/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 작업이 작동합니다. 인크론은 그렇지 않습니다.
먼저 다음을 확인하여 스크립트에서 경로를 설정해 보았습니다.
[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