시작 시 실행해야 하는 두 개의 프로그램이 있습니다. 내 시스템의 가상 머신에 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 필터가 효과적이지 않게 됩니다.