스크립트가 다른 프로세스에서 실행 중일 때 명령을 찾을 수 없습니다.

스크립트가 다른 프로세스에서 실행 중일 때 명령을 찾을 수 없습니다.

이는 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

관련 정보