スーパーバイザを使用してプログラムを実行すると権限エラーが発生しますが、シェルでは実行されません。

スーパーバイザを使用してプログラムを実行すると権限エラーが発生しますが、シェルでは実行されません。

常に実行する必要があるプログラムがあります。プログラムはメッセージブローカーからコマンドを受け取り、要求に応じてファイルシステム操作を実行し、同じブローカーを介して結果を公開します。ファイルにアクセスするには、ユーザーとして実行する必要がありますscicat。プログラムが常に実行されるように、supervisordプログラムをインストールして実行しました。

プログラムは正常に起動して受信しますが、ファイルシステム操作を実行すると権限エラーが発生します。ただし、これを行いsudo su - scicatシェルを介して実行すると、プログラムは期待どおりに実行されます。

Supervisordでサービスを定義する方法は次のとおりです。

[program:biomax-file-size-helper]
command=/opt/exp-lc/venvs/biomax-file-size-helper/bin/python /opt/exp-lc/biomax-file-size-helper/main.py
user=scicat

両方のプログラムを同時に実行すると(1つは実行され、1つは実行されません)、ps aux次のようになります。

scicat   29867  0.2  0.4 124640 19444 ?        Sl   15:44   0:03 /opt/exp-lc/venvs/biomax-file-size-helper/bin/python /opt/exp-lc/biomax-file-size-helper/main.py
scicat   30012  2.8  0.4 124096 19668 pts/0    Sl+  16:07   0:00 /opt/exp-lc/venvs/biomax-file-size-helper/bin/python /opt/exp-lc/biomax-file-size-helper/main.py

つまり、関連する点である程度同じ2つのプロセスです。プログラムがSupervisordを介して実行されているとファイルにアクセスできないが、シェルで実行されているとアクセスできないのはなぜですか?

関連情報