이는 qBittorrent 내에서 완료 스크립트로 실행됩니다. 다운로드가 완료되면 이 스크립트를 실행하고 모든 파일을 원격 서버로 보내고 싶습니다.
터미널에서 수동으로 실행하면 스크립트가 제대로 작동합니다. 응용 프로그램의 일부로 실행하면 다음과 같은 결과가 나타납니다.
21 │ PATH is:
22 │ /app/bin:/usr/bin
23 │ + /usr/bin/rsync --recursive -vv --remove-source-files --exclude temp <... etc.>
24 │ /<path>/onDownloadComplete.sh: line 49: /usr/bin/rsync: No such file or directory
터미널에서 실행하면 rsync를 찾습니다. ( 와 동일 which rsync
)
ls -lah /usr/bin | grep rsync
그러나 내 스크립트에서는 rsync의 결과를 반영 ls -lah /usr/bin
하지만 rsync는 없지만 다른 결과가 많이 있습니다.
bswift
그래서 어떻게 든 프로세스는 내가 찾을 수있는 - notfound 명령으로 실행됩니다 ./usr/bin
왜 이런거야? SE Linux를 확인해볼까 생각했는데 그렇지 않은 것 같습니다.
게다가 이 모든 것은 다음과 같은 코드 블록 내에서 실행됩니다.
#!/usr/bin/env bash
{
## Code
} 2>&1 | /usr/bin/tee -a /home/bswift/src/qbittorrent-completion-scripts/run_log.log
답변1
옵션 1:
onDownloadComplete.sh의 권한/소유권과 비교하여 /usr/bin/rsync의 권한을 확인하십시오.
"수동으로" 실행하는 경우 루트 또는 시스템에서 rsync를 수행할 권한이 있는 다른 사용자로 실행 중일 수 있습니다.
ls -l /usr/bin/rsync
ls -l /<path>/onDownloadComplete.sh
<onDownloadComplete.sh>의 소유자 및 그룹 필드를 rsync의 rw 권한과 비교하세요.
또한 onDownloadComplete.sh의 소유자 사용자가 rsync 그룹에 있는지 확인하세요. <onDownloadComplete.sh>의 소유자/사용자를 rsync 그룹에 추가해야 할 수도 있습니다.
옵션 2: 스크립트 내부의 경로를 확인하세요. /usr/bin이 포함되어 있는지 확인하세요.
echo $PATH