내 홈 폴더(pi)에 server.py라는 스크립트가 있습니다.
로그인하고 수동으로 실행할 필요가 없도록 데비안이 시작 시 이 스크립트를 실행하도록 하려면 어떻게 해야 합니까?
답변1
이 답변이 처음 작성되었을 때 데비안(기본 설치)은 바이너리에서 "SysV" rc 스크립트를 사용했습니다 start-stop-daemon
. 파일에는 /etc/init.d/skeleton
rc 스크립트의 기초로 사용할 수 있는 샘플 스크립트가 있습니다. rc 스크립트가 있고 실행 가능한 것으로 표시한 후에는 update-rc.d
이 명령을 사용하여 원하는 런레벨에 추가할 수 있습니다.
세월이 흐르면서 상황이 바뀌었습니다. 특히 2014년에는 두 가지 사항이 변경되었습니다.
- 이
/etc/init.d/skeleton
스크립트는 (5) 매뉴얼 페이지의 예제 스크립트로 대체init-d-script
되었습니다.오직/etc/init.d/skeleton
완전 폐지 시 기준으로 이용 가능합니다. 프레임워크의 내용도 크게 변경되어 더 이상 호출을 작성start-stop-daemon
하거나 일부 변수 할당 이상이 필요하지 않습니다. (바라보다https://unix.stackexchange.com/a/480897/5132.) - 설치 시 기본값이 systemd로 변경되며, systemd 서비스 유닛 파일을 작성하여(실행 가능으로 표시할 필요 없음) 사용해야 합니다
systemctl enable
. 단, 예제 유닛 파일은 없습니다. (바라보다https://github.com/systemd/systemd/issues/10572.)
따라서 2018년부터 최소한 시스템 서비스 단위 파일을 작성하고 설정에서 스크립트 이름을 지정해야 합니다(절대 경로 이름 사용) ExecStart
. 질문에서 특정 방식을 지정하지는 않지만 User
슈퍼유저 대신 사용자 계정에서 스크립트를 실행할 수 있는 설정을 사용할 수 있습니다 . 당신은요가능한다시 질문에 지정되지 않은 사항에 따라 스크립트 호출의 상대적 순서와 홈 디렉터리의 (자동) 설치(별도로 설치된 경우)를 조정해야 합니다.
답변2
투자하다.su -c 'SCRIPT' USER
/etc/rc.local