init.d에 스크립트를 설정한 후 프로그램을 실행할 수 없습니다.

init.d에 스크립트를 설정한 후 프로그램을 실행할 수 없습니다.

시작 시 실행해야 하는 두 개의 프로그램이 있습니다. 내 시스템의 가상 머신에 systemctl이 없기 때문에 init.d 스크립트를 사용합니다. 내 구성에 따르면 program_A는 작동하지만 program_B는 작동하지 않습니다. 시작된 것처럼 보이지만 예상대로 시스템 로그에 기록되지 않아 작동하지 않습니다.

내 설정은 다음과 같습니다.

/usr/bin/Program_A
/usr/bin/Program_B
...
/etc/init.d/Program_A.sh
/etc/init.d/Program_B.sh

그 중 Program_A.sh와 Program_B.sh는 유사합니다.

#!/bin/bash
sudo /usr/bin/Program_A &
disown

초기화 파일을 생성하고 실행 파일을 복사한 후 실행했습니다.

update-rc.d Program_A.sh defaults
update-rc.d Program_B.sh defaults

참고 1:스크립트에 "&" 및 "disown"을 추가해야 했습니다. 그렇게 하지 않으면 program_A가 멈춰서 program_B를 시작할 수 없게 되기 때문입니다.

노트 2: 다음 명령을 실행하면 두 프로그램 모두 제대로 작동합니다.

sudo /usr/bin/Program_X

노트 3 "거부"를 제거하고 program_B만 시작했습니다. 여전히 작동하지 않습니다.init.d에서 스크립트를 실행하는 것은 시작 시 스크립트를 시작하는 것과 다르게 동작합니다..

다음을 통해 프로그램이 시작되었는지 확인할 수 있습니다.

ps -aux | grep Program_B                      
root      1905  0.0  0.2   2308   868 ?        S    09:13   0:00 
/usr/bin/Program_B

그러나 시스템 로그의 파일은 업데이트되지 않습니다. 따라서 프로그램이 실행되지 않거나 프로그램이 다른 이름으로 시작되어 syslog 필터가 효과적이지 않게 됩니다.

관련 정보