시작 시 데비안에서 Python 스크립트를 실행하도록 하려면 어떻게 해야 합니까?

시작 시 데비안에서 Python 스크립트를 실행하도록 하려면 어떻게 해야 합니까?

내 홈 폴더(pi)에 server.py라는 스크립트가 있습니다.

데비안이 시작 시 이 스크립트를 실행하게 하여 로그인하고 수동으로 실행할 필요가 없도록 하려면 어떻게 해야 합니까?

답변1

이 답변이 처음 작성되었을 때 데비안(기본적으로 설치됨)은 바이너리와 함께 "SysV" rc 스크립트를 사용했습니다 start-stop-daemon. 파일에는 /etc/init.d/skeletonrc 스크립트의 기반으로 사용할 수 있는 예제 스크립트가 있습니다. rc 스크립트가 있고 실행 가능한 것으로 표시되면 명령을 update-rc.d사용하여 원하는 실행 수준에 추가할 수 있습니다.

세월이 흐르면서 상황이 바뀌었습니다. 특히 2014년에는 두 가지 사항이 변경되었습니다.

  • 스크립트 는 (5) 매뉴얼 페이지 /etc/init.d/skeleton의 예제 스크립트로 대체되었으며 init-d-script, 2018년 후반에오직/etc/init.d/skeleton완전히 폐기되었을 때 사용 가능한 베이스 . 스켈레톤의 내용도 크게 변경되어 더 이상 사람들이 start-stop-daemon일부 변수 할당에 대한 호출을 작성하거나 실제로 더 많은 것을 작성할 필요가 없습니다. (보다https://unix.stackexchange.com/a/480897/5132.)
  • 설치된 기본값은 systemd로 변경되었으며 대신 시스템 서비스 단위 파일(실행 가능으로 표시할 필요가 없음)을 작성하고 systemctl enable. 하지만 예제 유닛 파일은 없었습니다. (보다https://github.com/systemd/systemd/issues/10572.)

따라서 2018년부터는 설정에서 (적어도 절대 경로 이름을 사용하여) 스크립트 이름을 지정하는 시스템 서비스 단위 파일을 작성해야 합니다 ExecStart. 질문이 어떤 식으로든 지정하지는 않지만 User슈퍼유저가 아닌 사용자 계정의 보호 하에 스크립트가 실행되도록 설정을 사용하기를 원할 수도 있습니다. 당신은요~할 것 같다, 다시 질문에 지정되지 않은 사항에 따라 스크립트 호출의 상대적 순서와 별도로 마운트된 경우 홈 디렉토리의 (자동) 마운트를 조정해야 합니다.

답변2

su -c 'SCRIPT' USER에 넣어 /etc/rc.local.

관련 정보