특정 사용자로 부팅 시 Python 스크립트 실행

특정 사용자로 부팅 시 Python 스크립트 실행

부팅 시 특정 사용자로 Python 스크립트를 실행하고 싶습니다.

스크립트는 서버(소켓 수신, 요청 처리 등)이며 백그라운드에서 실행되어야 하며 모든 출력은 바람직하게는 로그 파일로 파이프됩니다.

나의 현재 접근 방식은 다음과 같이 rc.local 끝에 항목을 추가하는 것입니다.

su -l usr -c 'script.py arg1 arg2 &> logfile.log &'

문제: 스크립트에 여러 개의 인쇄 문이 있습니다. 로그 파일에는 절대 표시되지 않습니다. 난 노력 했어

su -l usr -c 'script.py arg1 arg2 &> logfile.log &'

su -l usr -c 'script.py arg arg &> logfile.log &' &> secondLogfile.log &

su -l usr -c 'script.py arg arg &> logfile.log &'

su usr -c 'script.py arg arg &> logfile.log &'

뭔가 기본적인 것이 빠져 있다는 느낌이 듭니다. 어쩌면 내가 완전히 잘못된 방향으로 접근하고 있을지도 모릅니다.

시스템은 Fedora 15이고 스크립트는 Python3이며 사용자로 명령줄에서 잘 실행됩니다. 사용자는 출력을 리디렉션하려는 폴더에 대한 쓰기 권한을 가지고 있습니다. (폴더를 777로 만들어서 배제했습니다.)

Python 스크립트를 Systemd 서비스로 실행하려고 시도했지만 스크립트가 수신할 소켓을 잡을 수 있는 데 문제가 있었습니다. (부팅 시 systemd 서비스를 활성화한 경우 사용 중인 소켓에 대한 OS 오류가 발생하는 반면, 부팅 후 systemctl start script.service를 실행하면 문제가 해결되었습니다.)

부팅 시 소켓을 잡는 사용자로 Python 스크립트를 어떻게 시작할 수 있습니까?

답변1

이것은 나에게 효과적입니다.

su -l usr -c "python script.py arg1 arg2 > logfile.txt &"

나는 이전 &가 "python script.py"를 조기에 배경으로 밀어넣고 있다고 생각합니다.

답변2

@Reboot 라인은 crontab의 매력처럼 작동했습니다. Freetx의 답변이 저에게 효과적이지 않았습니다. (저는 그것과 똑같은 것을 시도했지만 주사위는 없었습니다 :-(

관련 정보