Linux 시작 시 Python 스크립트를 실행하는 방법

Linux 시작 시 Python 스크립트를 실행하는 방법

Linux Ubuntu 14.04 ~/app/serve.py에 스크립트가 있습니다.

이 폴더에서 실행해야 합니다. 쉘에서는 할 수 있습니다

> cd ~/app && python serve.py

그리고 서버를 운영하고 있어요

백그라운드에서 서버 부팅 시 실행해야 합니다. etc/rc.local(및 etc/init.d/rc.local)에 이 명령을 추가하려고 시도했지만 cd ~/app && python serve.py ~시작되지 않습니다.

내가 도대체 ​​뭘 잘못하고있는 겁니까?

답변1

/etc/rc.local을 추가하는 대신 cd ~/app && python serve.py전체 경로를 입력해 보세요. init 프로세스가 ~가 홈 디렉토리라는 것을 알기를 기대하지만 init는 루트로 시작합니다. init는 루트로 시작하기 때문에 /홈 디렉터리가 아닌 앱 디렉터리를 찾습니다 . 홈 디렉토리 경로를 사용하여 ~를 제거하십시오.

/home/whitecolor/app/serve.py에 추가해 보세요 /etc/rc.local. ( 경로 디렉토리를 찾으려면.) 스크립트 상단에 추가하여 Serve.py 스크립트 앞을 pwd제거하세요 . ( 정상적인 위치에 설치되어 있지 않은 경우 a를 입력하여 경로를 찾아보세요)python#!/usr/bin/pythonwhich python

편집: "백그라운드에서 실행"이라고 말씀하셨는데 저는 그 말을 놓쳤습니다. 백그라운드에서 명령을 실행하려면 &명령 뒤에 를 추가하세요. 따라서 위 명령을 배경으로 실행하려면 /home/whitecolor/app/serve.py & 일반적으로 Init는 작업을 시작하고 배경에서 실행하는 데 배경 기호가 필요하지 않습니다.

&DrDR의 훌륭한 제안은 기본적으로 백그라운드에서 실행되는 것처럼 cron 시작 시 명령 후에 동일한 처리가 필요하지 않습니다 .

답변2

나는 이것을 시도할 필요가 없었지만 아래 @reboot로 시작하는 것과 유사한 줄을 추가하여 cron을 통해 시스템 시작 시 스크립트를 실행할 수 있는 것 같습니다.

#m  h  dom  mon  dow  command
1   *  *    *    *    someHourlyCommand
@reboot               python /home/<username>/app/serve.py

참고로, 디렉토리로의 cd'ing을 제거하기 위해 명령을 약간 변경했습니다. 귀하의 상황은 다를 수 있으므로 귀하에게 적합한 것을 선택하십시오.

관련 정보