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