일반 프로그램을 데몬/서비스로 실행하는 방법

일반 프로그램을 데몬/서비스로 실행하는 방법

중복 가능성:
실행 중인 명령을 종료하지 않고 터미널을 닫으려면 어떻게 해야 합니까?

내 서버는 데비안을 사용합니다.

방금 MediaCore를 설치했는데 훌륭하게 작동합니다.

이제 항상 시작하기를 원하며 서비스로 시작하거나 백그라운드에서 어떻게 시작할 수 있는지 묻고 싶습니다.

시작하는 방법을 알고 있지만 프로그램이 실행되는 한 쉘은 쓸모가 없습니다.

그렇다면 서비스/데몬을 실행할 때 어떻게 자동으로 실행합니까?

답변1

몇 가지 옵션이 있습니다.

먼저 화면에서 실행한 screen다음 실행 후 Ctrl-A를 눌러 화면을 종료할 수 있습니다. 나중에 화면에 다시 연결할 수 있습니다 screen -RR {screen number}. 를 이용하여 화면번호를 알 수 있습니다 screen -ls. (활성 화면이 하나만 있는 경우 screen -RR다시 연결하면 됩니다.)

둘째, 셸에서 시작하고 &명령을 추가하여 백그라운드에 배치할 수 있습니다. 그러나 쉘이 명령의 출력을 쉘 주위로 퍼뜨리지 않도록 stdout 및 stderr을 적절한 파일로 리디렉션하려고 합니다. 내 생각엔

$ command > command.stdout 2> command.stderr &

당신이 찾고있는 것.

저는 MediaCore를 사용해본 적이 없어서 그것이 무엇을 출력하는지 모릅니다. 이는 stdout이든 stderr이든 관계없이 모든 출력을 파일로 캡처하려는 경우에 작동합니다.

$ command &> command.output &

그러나 장기적으로 Debian을 사용하고 있으므로 올바른 방법은 이에 대한 init 스크립트를 추가하는 것입니다(@user606723이 언급한 대로). skeleton스크립트 중 하나가 /etc/init.d좋은 출발점이 될 것입니다.

답변2

"screen"을 사용하여 프로그램을 실행하거나 "hohup"을 사용하여 터미널에서 분리할 수 있습니다.

nohup my_app 2>/dev/null 2>&1 & 

또는

screen -d -m my_app 

관련 정보