감독자를 사용하여 프로그램을 실행할 때 권한 오류가 발생하지만 셸에서는 실행되지 않습니다.

감독자를 사용하여 프로그램을 실행할 때 권한 오류가 발생하지만 셸에서는 실행되지 않습니다.

항상 실행되어야 하는 프로그램이 있습니다. 프로그램은 메시지 브로커에서 명령을 수신하고 요청 시 파일 시스템 작업을 수행하며 동일한 브로커를 통해 결과를 게시합니다. 파일에 액세스하려면 사용자로 실행해야 합니다 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

두 프로그램을 동시에 실행하면(하나는 실행되고 하나는 실행되지 않음) 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

즉, 관련 측면에서 어느 정도 동일한 두 프로세스입니다. 프로그램이 Supervisord를 통해 실행될 때 파일에 액세스할 수 없지만 셸에서 실행될 때는 액세스할 수 없는 원인은 무엇입니까?

관련 정보