OS/Linux - Ubuntu

[Linux - 리눅스 / Ubuntu - 우분투] 데몬 프로세스 - 슈퍼데몬, init, 커널 쓰레드 데몬

주누다 2015. 4. 18. 15:46
반응형

데몬 프로세스

- 데몬(Daemon)은 리눅스의 백그라운드에서 동작하면서 특정한 서비스를 제공하는 프로세스를 의미

- 웹 서버나 데이터베이스 서버, 원격 접속 서버 등 각 종 서비스를 제공하는 프로세스들이 바로 데몬.



데몬의 동작 방식

- 데몬은 두 가지 동작방식.

- 데몬 혼자 스스로 동작하는 동작형(standalone)

- 데몬을 관리하는 슈퍼 데몬에 의해 동작하는 방식

- 독자형의 경우(standalone) 시스템의 백그라운드에서 항상 독작(자주 호출된느 데몬이 아니라면 시스템의 자원을 낭비할 우려)

- 슈퍼 데몬의 경우, 평소에는 슈퍼 데몬만 동작하다가 서비스 용청이 오면 슈퍼 데몬이 해당 데몬을 동작시키는 것

- 슈퍼 데몬 같은 경우 독자형보다는 서비스에 응답하는 시간이 좀 더 걸릴 수 있지만, 자원을 효율적으로 사용하는 장점



슈퍼 데몬

- 데몬의 종류가 늘어나자 이를 관리하기 위한 슈퍼 데몬이 등장

- 유닉스에서 슈퍼 데몬의 이름은 'ineted' 였으나, 우분투에서는 보안 기능이 포함된 'xineted'를 사용

- 슈퍼 데몬은 네트워크 서비스를 제공하는 데몬만 관리

- 사용자가 네트워크 서비스를 요청하면 슈퍼 데몬이 이를 받아서 해당하는 서비스 데몬을 동작시키는 것




데몬의 조상

- 대부분의 데몬을 동작시키는 조상 데몬이 있음

- 'init' 과 '커널 쓰레드 데몬' 이 바로 그것

init 데몬

- init 데몬은 1번 프로세스이며 프로세스 대부분의 조상 프로세스

- 'pstree' 명령으로 프로세스들의 실행 구조를 확인해보면 'init'이 다른 데몬의 조상임을 확인할 수 있음

====================================================================

sjw-lenovo@sjwlenovo-Lenovo-U310:~$ pstree
init─┬─ModemManager───2*[{ModemManager}]
     ├─NetworkManager─┬─dhclient
     │                ├─dnsmasq
     │                └─3*[{NetworkManager}]
     ├─accounts-daemon───2*[{accounts-daemon}]
     ├─acpid
     ├─atd
     ├─bluetoothd
     ├─colord───2*[{colord}]
     ├─cron
     ├─cups-browsed
     ├─cupsd
     ├─dbus-daemon
     ├─6*[getty]
     ├─gnome-keyring-d───7*[{gnome-keyring-d}]
     ├─irqbalance
     ├─kerneloops
     ├─lightdm─┬─Xorg───2*[{Xorg}]
     │         ├─lightdm─┬─init─┬─at-spi-bus-laun─┬─dbus-daemon
     │         │         │      │                 └─3*[{at-spi-bus-laun}]
     │         │         │      ├─at-spi2-registr───{at-spi2-registr}
     │         │         │      ├─bamfdaemon───3*[{bamfdaemon}]
     │         │         │      ├─dbus-daemon
     │         │         │      ├─dconf-service───2*[{dconf-service}]
     │         │         │      ├─evolution-calen───4*[{evolution-calen}]
     │         │         │      ├─evolution-sourc───2*[{evolution-sourc}]
     │         │         │      ├─firefox─┬─plugin-containe───15*[{plugin-conta+
     │         │         │      │         └─56*[{firefox}]
     │         │         │      ├─gconfd-2
     │         │         │      ├─gnome-session─┬─compiz───7*[{compiz}]
     │         │         │      │               ├─deja-dup-monito───2*[{deja-du+
     │         │         │      │               ├─nautilus───3*[{nautilus}]
     │         │         │      │               ├─nm-applet───2*[{nm-applet}]
     │         │         │      │               ├─polkit-gnome-au───2*[{polkit-+
     │         │         │      │               ├─telepathy-indic───2*[{telepat+
     │         │         │      │               ├─unity-fallback-───3*[{unity-f+
     │         │         │      │               ├─update-notifier───3*[{update-+
     │         │         │      │               ├─zeitgeist-datah───6*[{zeitgei+
     │         │         │      │               └─3*[{gnome-session}]
     │         │         │      ├─gnome-terminal─┬─bash───pstree
     │         │         │      │                ├─gnome-pty-helpe
     │         │         │      │                └─3*[{gnome-terminal}]
     │         │         │      ├─gvfs-afc-volume───2*[{gvfs-afc-volume}]
     │         │         │      ├─gvfs-gphoto2-vo───{gvfs-gphoto2-vo}
     │         │         │      ├─gvfs-mtp-volume───{gvfs-mtp-volume}
     │         │         │      ├─gvfs-udisks2-vo───2*[{gvfs-udisks2-vo}]
     │         │         │      ├─gvfsd───{gvfsd}
     │         │         │      ├─gvfsd-burn───{gvfsd-burn}
     │         │         │      ├─gvfsd-fuse───4*[{gvfsd-fuse}]
     │         │         │      ├─gvfsd-http───3*[{gvfsd-http}]
     │         │         │      ├─gvfsd-metadata───{gvfsd-metadata}
     │         │         │      ├─gvfsd-trash───2*[{gvfsd-trash}]
     │         │         │      ├─hud-service───3*[{hud-service}]
     │         │         │      ├─ibus-daemon─┬─ibus-dconf───3*[{ibus-dconf}]
     │         │         │      │             ├─ibus-engine-han───2*[{ibus-engi+
     │         │         │      │             ├─ibus-engine-sim───2*[{ibus-engi+
     │         │         │      │             ├─ibus-ui-gtk3───3*[{ibus-ui-gtk3+
     │         │         │      │             └─2*[{ibus-daemon}]
     │         │         │      ├─ibus-x11───3*[{ibus-x11}]
     │         │         │      ├─indicator-appli───{indicator-appli}
     │         │         │      ├─indicator-bluet───2*[{indicator-bluet}]
     │         │         │      ├─indicator-datet───5*[{indicator-datet}]
     │         │         │      ├─indicator-keybo───3*[{indicator-keybo}]
     │         │         │      ├─indicator-messa───3*[{indicator-messa}]
     │         │         │      ├─indicator-power───2*[{indicator-power}]
     │         │         │      ├─indicator-print───2*[{indicator-print}]
     │         │         │      ├─indicator-sessi───2*[{indicator-sessi}]
     │         │         │      ├─indicator-sound───3*[{indicator-sound}]
     │         │         │      ├─mission-control───2*[{mission-control}]
     │         │         │      ├─notify-osd───2*[{notify-osd}]
     │         │         │      ├─pulseaudio───2*[{pulseaudio}]
     │         │         │      ├─unity-files-dae───7*[{unity-files-dae}]
     │         │         │      ├─unity-music-dae───2*[{unity-music-dae}]
     │         │         │      ├─unity-panel-ser───2*[{unity-panel-ser}]
     │         │         │      ├─unity-scope-hom───2*[{unity-scope-hom}]
     │         │         │      ├─unity-scope-loa───3*[{unity-scope-loa}]
     │         │         │      ├─unity-settings-─┬─syndaemon
     │         │         │      │                 └─5*[{unity-settings-}]
     │         │         │      ├─unity-webapps-s───2*[{unity-webapps-s}]
     │         │         │      ├─2*[upstart-dbus-br]
     │         │         │      ├─upstart-event-b
     │         │         │      ├─upstart-file-br
     │         │         │      ├─vlc───10*[{vlc}]
     │         │         │      ├─window-stack-br
     │         │         │      ├─zeitgeist-daemo───{zeitgeist-daemo}
     │         │         │      └─zeitgeist-fts─┬─cat
     │         │         │                      └─2*[{zeitgeist-fts}]
     │         │         └─{lightdm}
     │         └─2*[{lightdm}]
     ├─master─┬─pickup
     │        └─qmgr
     ├─polkitd───2*[{polkitd}]
     ├─rsyslogd───3*[{rsyslogd}]
     ├─rtkit-daemon───2*[{rtkit-daemon}]
     ├─systemd-logind
     ├─systemd-udevd
     ├─udisksd───5*[{udisksd}]
     ├─upowerd───2*[{upowerd}]
     ├─upstart-file-br
     ├─upstart-socket-
     ├─upstart-udev-br
     ├─whoopsie───2*[{whoopsie}]
     └─wpa_supplicant
sjw-lenovo@sjwlenovo-Lenovo-U310:~$
====================================================================

 커널 쓰레드 데몬

- 커널의 일부분을 프로세스처럼 관리하는 데몬을 '커널 데몬'이라고 함.

- ps 명령으로 확인시 대괄호( [ ] )로 둘러싸여 있는 프로세스들

- 예전에는 대부분 k로 시작했으나 요즘은 이를 반드시 준수하지 않음

- 커널 데몬은 대부분 입출력이나 메모리 관리, 디스크 동기화 등을 수행하며,

  대체로 PID가 낮은 번호로 할당

- 일반 프로세스의 조상 데몬이 'init' 이라면,

 커널 데몬을 동작시키는 조상 데몬은 '커널 쓰레드 데몬(kthreadd)' 임

- ps 명령으로 확인시 모든 커널의 데몬의 PPID가 2번임을 확인 가능.

- PID 2번은 'kthreaddd' 데몬임.

====================================================================

sjw-lenovo@sjwlenovo-Lenovo-U310:~$ ps -ef | more
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 13:13 ?        00:00:03 /sbin/init
root         2     0  0 13:13 ?        00:00:00 [kthreadd]
root         3     2  0 13:13 ?        00:00:03 [ksoftirqd/0]
root         5     2  0 13:13 ?        00:00:00 [kworker/0:0H]
root         7     2  0 13:13 ?        00:00:06 [rcu_sched]
root         8     2  0 13:13 ?        00:00:02 [rcuos/0]
root         9     2  0 13:13 ?        00:00:02 [rcuos/1]
root        10     2  0 13:13 ?        00:00:02 [rcuos/2]
root        11     2  0 13:13 ?        00:00:02 [rcuos/3]
root        12     2  0 13:13 ?        00:00:00 [rcuos/4]
root        13     2  0 13:13 ?        00:00:00 [rcuos/5]
root        14     2  0 13:13 ?        00:00:00 [rcuos/6]
root        15     2  0 13:13 ?        00:00:00 [rcuos/7]
root        16     2  0 13:13 ?        00:00:00 [rcu_bh]
root        17     2  0 13:13 ?        00:00:00 [rcuob/0]
root        18     2  0 13:13 ?        00:00:00 [rcuob/1]
root        19     2  0 13:13 ?        00:00:00 [rcuob/2]
root        20     2  0 13:13 ?        00:00:00 [rcuob/3]
root        21     2  0 13:13 ?        00:00:00 [rcuob/4]
root        22     2  0 13:13 ?        00:00:00 [rcuob/5]
root        23     2  0 13:13 ?        00:00:00 [rcuob/6]
root        24     2  0 13:13 ?        00:00:00 [rcuob/7]

--More--

====================================================================




 

 

 데몬

 기능

atd

특정 시간에 실행하도록 예약한 명령을 실행(at 명령으로 예약)

crond

주기적으로 실행하도록 예약한 명령을 실행

dhcpd

동적으로 IP주소를 부여할 수 있도록 하는 서비스를 제공

httpd

웹 서비스를 제공

lpd

프린트 서비스를 제공

nfs

네트워크 파일 시스템 서비스를 제공

named

DNS 서비스를 제공

sendmail

이메일 서비스를 제공

smtpd

메일 전송 데몬

popd

기본 편지함 서비스를 제공

routed

자동 IP 라우터 테이블 서비스를 제공

smb

삼바 서비스를 제공

syslogd

로그 기록 서비스를 제공

sshd

원격 보안 접속 서비스를 제공

in,telnetd

원격 접속 서비스를 제공

ftpd

파일 송수신 서비스를 제공

ntpd

시간 동기화 서비스를 제공




반응형