다음과 같은 서비스가 설치되어 있습니다.
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는 최근에 자격 증명을 입력하지 않은 경우 루트(또는 다른 사용자)로 명령을 실행하려면 암호를 제공해야 하는 대화형 프로그램입니다. 이것로컬 파일스크립트는 콘솔에 첨부되어 있지 않으므로 비밀번호를 묻는 메시지가 표시되지 않습니다.
이것로컬 파일스크립트는 이미 루트로 실행 중이므로 제거해야 합니다.스도그것으로부터 명령을 내리십시오.
더 나은 접근 방식은 추가한 모든 것을 간단히 바꾸는 것입니다./홈/파일 디렉터리/my_script(또는/home/filedirectec/my_script &필요하다면). 절대 경로를 사용하면 정확한 내용을 더 빠르고 쉽게 확인할 수 있습니다.로컬 파일나중에 스크립트가 수행하는 작업을 검토해야 하는 경우CD등은 일반적으로 대화형 쉘에 더 적합합니다.
답변2
당신이 할 수 있는 한 가지는 별도의 공간에 있는 것입니다.화면회의.
예를 들어 rc.local 파일은 다음과 같습니다.
/usr/bin/screen -dmS my_script bash -c '/home/filedirec/my_script'
그런 다음 실행 후 화면을 쉽게 "다시 연결"하고 스크립트에서 무슨 일이 일어나고 있는지 확인할 수 있습니다. 출력은 파일에 기록될 수도 있습니다.
시스템에서 화면 명령을 사용할 수 없는 경우:sudo apt-get install screen
사진이 포함된 튜토리얼: 화면: 연결이 끊어져도 프로세스를 계속 실행합니다.