데몬이란 무엇입니까?


12

우분투 컴퓨터에서 실행되는 데몬에 대해 많은 이야기를 듣습니다.

답변:


15

간단히 말해 데몬은 백그라운드 프로세스 입니다.

데몬은 백그라운드에서 실행되는 일반적인 프로그램 일 수 있지만 대부분 프로세스를 시작하고 분기하여 상위 항목을 종료하여 작성됩니다.

프로세스를 포크한다는 것은 프로세스의 정확한 사본을 만드는 것을 의미합니다. 실제 부모 가 즉시 종료 되면 해당 프로세스의 부모 는 이제 init 프로세스입니다 /sbin/init. 이는 모든 유닉스 계열 운영 체제에서 처음 시작되는 프로세스 입니다. 이제 프로세스를 데몬이라고하며 연관된 TTY가 없습니다.

다음은 파이썬에서 데몬의 예입니다 :

import sys, os, time

pid = os.fork()

# there now exist two processes
if pid > 0: # If this is the parent,
    sys.exit(0) # quit.

# this is the background part:
time.sleep(5)
print "Hello, World!"

엄밀히 말하면 아직은 아닙니다. 또한 현재 작업 디렉토리, 표준 입력 및 출력을 로그 파일 등으로 변경해야합니다. 이 위키 백과 기사 에서 자세한 내용을 읽을 수 있습니다 .

예제를 실행하면 명령 줄에서 시작한 프로세스가 종료 된 경우에도 2 초 후에 인쇄됩니다. 이 프로세스의 사본은 지금 'by'init로 실행됩니다.


8
이를 확장하기 위해 Windows에서 Linux를 사용하는 경우 데몬을 Windows의 "서비스"에 해당하는 * nix로 생각할 수 있습니다.
nathwill

1
@ stefano-palazzo 당신은 "... 그것은 그것과 관련된 TTY가 없다"고 말한 다음 "... 2 초 후에 인쇄됩니다 ..." TTY를 분리하면 터미널에 쓸 수 없다고 생각했습니다.
Jorge Bucaran 2016 년

1
@JorgeBucaran 네. 인쇄가 조금 이상합니다. 여전히 시작한 tty의 표준 출력 스트림에 대한 핸들을 가질 수 있습니다. / dev / stdout과 같은 파일을 열면 파일 디스크립터라고하는 숫자가 표시됩니다. 파일을 연 프로세스가 여전히 실행 중이면 파일에 기록하면됩니다. 에서 열린 파일 /proc/*/fd). 잘 동작하는 데몬은 stdout, stderr 및 stdin에 핸들을 제공하여 tty에서 완전히 분리됩니다.
Stefano Palazzo

1
@StefanoPalazzo 알겠습니다. 부모의 프로세스 std / out / err에 대한 참조를 유지하고 여전히 분리 할 수 ​​있습니다. TTY에 대한 참조를 임의로 유지할 수 있다면 프로세스를 분리한다는 것은 무엇을 의미합니까? < superuser.com/questions/178587/… > 유용하다는 것을 알았지 만 여전히 불분명합니다.
Jorge Bucaran 2016 년

1
@JorgeBucaran은 프로세스 자체 stdio (예 : dup2 사용 )를 새로 만든 로그 파일 (예 : 로그 파일) 로 덮어 쓰는 것을 의미합니다 . 다음은 전체 예입니다
Stefano Palazzo

1

멀티 태스킹 컴퓨터 운영 체제에서 데몬은 대화식 사용자가 직접 제어하지 않고 백그라운드 프로세스로 실행되는 컴퓨터 프로그램입니다. 일반적으로 데몬의 프로세스 이름은 문자 d로 끝납니다. 프로세스는 실제로 데몬이라는 것을 명확히하고 데몬과 일반 컴퓨터 프로그램을 구별하기위한 것입니다. 예를 들어, syslogd는 시스템 로깅 기능을 구현하는 데몬이고 sshd는 들어오는 SSH 연결을 제공하는 데몬입니다.

보시다시피 데몬의 레이어


2
견적은 어디에서 왔습니까?
잔나

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.