Ubuntu의 UPSTART 기능을 사용하여 Python 스크립트를 루트로 시작하지 않고 어떻게 다시 시작할 수 있습니까?

Ubuntu의 UPSTART 기능을 사용하여 Python 스크립트를 루트로 시작하지 않고 어떻게 다시 시작할 수 있습니까?

저는 Python 스크립트를 실행하기 위해 Ubuntu의 시작 기능을 사용하고 있습니다. 그러면 Python 스크립트가 어떤 이유로 죽거나 종료되면 자동으로 다시 시작되어 모든 것이 작동하게 됩니다.

UPSTART그래서 저는 Python 스크립트를 자동으로 다시 시작하는 Ubuntu의 기능을 활용하기로 결정했습니다 .

testing.conf이런 파일을 만든 후 /etc/init/testing.conf-

start on runlevel [2345]
stop on runlevel [016]

chdir /tekooz
respawn

post-stop script
  sleep 30
end script

exec python testing.py

아래에서 sudo 명령을 실행하여 시작하면 프로세스가 사용되고 ps ax있고 Python 스크립트가 제대로 실행되는 것을 볼 수 있습니다. 위 프로세스의 pid를 확인해보면 항상 루트로 실행되는 것을 볼 수 있습니다. 루트로 실행하고 싶지 않습니다. 대신 deds계정으로 실행하고 싶습니다.

deds@bx13:/$ sudo start testing
testing start/running, process 3635
deds@bx13:/$ ps aux | grep testing
root      3635  2.4  0.1 364136 15660 ?        Ssl  12:24   0:00 python testing.py

testing.conf파일을 저장한 다음 다른 명령으로 실행해야 하는 다른 곳이 있나요 ?

sudoas를 통해 Python 스크립트를 시작하고 싶지 않으며 sudo start testing루트로 시작하고 싶지도 않고 deds계정으로 시작하고 싶습니다. 다른 방법이 있나요?

답변1

두 가지 옵션이 있습니다. 이 명령을 사용하는 시작 버전이 initctl --version1.4 이상인 경우 test.conf 파일에 다음 줄을 추가합니다.

setuid deds
setgid deds

그렇지 않으면 exec행을 다음으로 변경하십시오.

exec sudo -u deds python testing.py

관련 정보