これは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の権限を確認してください。
「手動で」実行している場合は、rootまたはシステムで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