
데몬으로 실행하고 싶은 C 프로그램이 있습니다. 저는 우분투 14.04LTS에서 일하고 있습니다. 그렇게 하는 올바른 방법은 무엇입니까? 누구든지 도와줄 수 있나요?
답변1
이제 우분투 답변입니다.
이를 수행하는 올바른 방법은 Ubuntu 14와 함께 제공되는 데몬 관리자 아래에 있는 것입니다. 여기서 다른 사람들이 명시적으로 데몬이 되도록 프로그램을 설계하고 라이브러리 함수를 호출하는 것에 대해 말한 것은 daemon()
완전히 잘못된 것입니다. 아이러니하게도 Ubuntu는 세 개의 LTS 릴리스로 시작되었습니다.이전의버전 14 LTS로 — 실제로 2006년 Ubuntu 6.10부터. 그 이후로 이런저런 종류의 데몬 관리자가 있었습니다.
적절한 서비스 관리를 갖춘 사람들의 올바른 대답은 다음과 같습니다.하지 마라전화 daemon()
하고 너하지 마라"데몬이 되기" 위해 특별한 조치를 취하세요. 그리고 일부 사람들에게는 이것이 1990년대 초반부터 올바른 대답이었습니다. 2006년에도 파티가 다소 늦었습니다. ☺ 그럼에도 불구하고 지난 10년간 우분투에 관한 한 그것은 확실히 정답이었습니다.
당신이 하는 일은 간단합니다. upstart에 프로그램을 호출하는 시기와 방법을 알려주는 upstart "작업" 파일을 설정합니다. 신생 기업이 그것을 호출합니다이미 악마화됐어, 제어 터미널 없이 예측 가능하고 변하지 않는 초기 프로세스 상태를 갖습니다. 귀하의 프로그램특별한 일은 하지 않는다그리고 단순히 실행하여 로그와 오류 메시지를 일반적인 방법으로 표준 오류에 기록합니다. Upstart가 표준 오류에 기록된 내용을 처리하는 방법을 작업 파일에서 정렬합니다.
그만큼신생 요리책시작 이벤트 및 로그 처리를 제어하는 다양한 스탠자를 포함하여 이 모든 것을 자세히 설명합니다. 그리고 여기와 AskUbuntu에는 이 주제에 대한 내용이 많이 있습니다.
나중에 Ubuntu 16 LTS로 업그레이드하면 세상이 크게 바뀔 것이라는 사실에 대비하세요. 하지만 그때도코드에 특별한 작업을 수행하지 않고 단순히 데몬 관리자에서 실행합니다.정답으로 남을 것입니다.
추가 읽기
- 제임스 헌트와 클린트 바이럼(2014). "콘솔". 신생 요리책.
- https://unix.stackexchange.com/a/200281/5132
- 초기화우분투 14.04 매뉴얼 페이지. 정식.
- 조나단 드 보인 폴라드(2001). Unix 데몬 프로그램을 설계할 때 피해야 할 실수. 자주 주어지는 답변.
- https://superuser.com/a/723333/38062
- https://askubuntu.com/a/613814/43344
답변2
문제가 터미널에서 프로그램을 실행하는 것이라면 다음과 같은 몇 가지 방법이 있습니다(프로그램은 사용자 입력을 요청해서는 안 됩니다).
사용
nohup
:nohup program > program.log 2>program.err &
. 그런 다음 터미널을 종료할 수 있습니다.서비스 사용
atd
:echo "program > program.log 2>program.err" | at now
또는echo "program > program.log 2>program.err" | batch
.부팅 스크립트에 의한 서비스로.
프로그램이 사용자 입력을 요청하는 경우 터미널 외부에서 실행할 수 없습니다. 가장 좋은 방법은 screen
또는 tux
세션을 사용한 다음 터미널에서 분리하는 것입니다.