내 홈 폴더(pi)에 server.py라는 스크립트가 있습니다.
데비안이 시작 시 이 스크립트를 실행하게 하여 로그인하고 수동으로 실행할 필요가 없도록 하려면 어떻게 해야 합니까?
답변1
이 답변이 처음 작성되었을 때 데비안(기본적으로 설치됨)은 바이너리와 함께 "SysV" rc 스크립트를 사용했습니다 start-stop-daemon
. 파일에는 /etc/init.d/skeleton
rc 스크립트의 기반으로 사용할 수 있는 예제 스크립트가 있습니다. 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
.