常に実行する必要があるプログラムがあります。プログラムはメッセージブローカーからコマンドを受け取り、要求に応じてファイルシステム操作を実行し、同じブローカーを介して結果を公開します。ファイルにアクセスするには、ユーザーとして実行する必要があります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を介して実行されているとファイルにアクセスできないが、シェルで実行されているとアクセスできないのはなぜですか?