데비안에서 자동 시작 스크립트

데비안에서 자동 시작 스크립트

다음과 같이 설치하는 서비스가 있습니다.

install -m 755 init_script /etc/init.d/spacenavd
cd /etc/rc2.d
ln -s ../init.d/spacenavd S99spacenavd

init_script가 하는 일은 스크립트를 시작하는 것입니다:

/usr/local/bin/spacenavd -v

이 모든 것이 잘 작동하며 시작 시 서비스가 자동으로 시작되도록 합니다. 그러나 spacenavd 서비스를 사용하는 시작 시 다른 스크립트를 실행하는 데 문제가 있습니다. 이 스크립트는 로그인 후 수동으로 실행하면 정상적으로 작동합니다. 그러나 시작할 때 실행하면 rc.local에 넣으면 작동하지 않습니다.

rc.local에서 다음을 수행합니다.

cd /home/filedirec
sudo ./my_script &

이것은 때때로 작동하고 때로는 작동하지 않습니다. 원인이 무엇인지는 알 수 없는 것 같습니다. 문제를 해결하는 좋은 방법은 무엇입니까?

답변1

데자뷰.

Sudo는 최근 자격 증명을 입력하지 않은 경우 루트(또는 다른 사용자)로 명령을 실행하려면 암호를 제공해야 하는 대화형 프로그램입니다. 그만큼rc.local스크립트는 콘솔에 첨부되어 있지 않으므로 비밀번호를 묻는 메시지가 표시되지 않습니다.

그만큼rc.local스크립트도 이미 루트로 실행 중이므로 제거해야 합니다.sudo그것으로부터 명령을 내리세요.

더 나은 방법은 추가한 모든 항목을 다음과 같이 간단히 바꾸는 것입니다./홈/파일 디렉터리/my_script(또는/home/filedirectec/my_script &필요한 경우). 절대 경로를 사용하면 정확한 내용을 더 빠르고 쉽게 확인할 수 있습니다.rc.local나중에 검토해야 할 경우 스크립트가 수행 중입니다.CD일반적으로 대화형 쉘에 더 적합합니다.

답변2

당신이 할 수 있는 한 가지는 별도의 스크립트에서 스크립트를 시작하는 것입니다.화면세션.

예를 들어 rc.local 파일은 다음과 같습니다.

/usr/bin/screen -dmS my_script bash -c '/home/filedirec/my_script'

그런 다음 시작 후 화면을 쉽게 '다시 연결'하고 스크립트에 무슨 일이 일어나고 있는지 확인할 수 있습니다. 출력을 파일에 기록하는 것도 가능합니다.

시스템에서 화면 명령을 사용할 수 없는 경우:sudo apt-get install screen

사진이 포함된 튜토리얼: 화면: 연결이 끊어져도 프로세스를 계속 실행하세요

관련 정보