태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

UNIX Daemon

Posted 2009/02/04 21:28


댓글 하나가 운영자에겐 커다란 힘이 됩니다!

###########
UNIX Daemon
###########


▣ UNIX daemons

Daemon은 UNIX에서 background로 실행되어 시스템에 관련된 여러가지 일을 하는 프로세스를 말한다. Daemon은 보통 시스템이 시작될 때 실행되며 시스템이 끝날 때까지 종료되지 않는다.
경우에 따라서 필요할 때만 실행되었다가 끝나는 daemon도 있다.


■ Essential Daemons

▷ init

init은 시스템이 시작할 때 가장 먼저 실행되는 프로세스이다.
이 프로세스의 PID는 항상 1이고, 이 프로세스가 모든 사용자
프로세스의 parent가 된다.
init이 실행되면 시스템의 startup 파일을 읽어서 그 안에 있는
내용을 실행한다.
그 뒤 어떤 device로 login을 할 수 있는지를 알아내어 port를 open하고 각각을 getty 프로세스에 할당하여 사용자가 login 할 수 있도록 한다.

init은 shell을 fork하는 일을 하고, 다른 프로세스가 zombie(defunct) 프로세스가 되었을 때 init daemon이 parent 가 되어 zombie 프로세스를 관리한다.

시스템을 종료하려면 init daemon에 SIGTERM signal을 보내면
된다. init이 SIGTERM signal을 받으면 시스템을 single-user mode로 바꾸고 shutdown 작업을 하게 된다.

보통 시스템의 startup 파일은 /etc/init.d 디렉토리에 있고, rc?.d 디렉토리와 link되어 있다. rc 디렉토리에는 각 run-level에 맞는 script-x들이 들어있다.

▷ cron : Schedule commands

cron은 미리 정해진 시간에 특정한 일을 수행하는 역할을 한다.
SA나 일반 사용자 모두 cron을 사용할 수 있다.
보통 log 파일 관리나 파일시스템에서 불필요한 파일을 없애는 작업같이 반복해서 해야하는 작업을 할 때 cron을 많이 사용한다.


▷ inetd : manage daemons

inetd는 다른 daemon을 관리하는 daemon이다. inetd는 특정 작업을 할 필요가 있을 때 해당 daemon을 실행시키고 그 일이 끝나면 daemon을 없애는 일을 한다.
inetd는 network을 이용하는 daemon만을 관리한다. 각 client마다 할당된 port를 검사하다가 사용자가 해당 client를 필요로 하게
되면 그 daemon을 실행시키고 daemon의 standard I/O를 network port로 바꾸어, 사용자가 사용할 수 있도록 한다.

inetd가 관리하는 service를 정하는 파일이 services 파일이다.
이 파일은 보통 inetd.conf 파일과 같은 디렉토리(보통 /etc)에
있다.

inetd를 다시 실행시키고 싶으면 Hangup signal을 inetd에 보내면 된다.


▷ portmap : map RPC services to TCP & UDP ports

portmap은 RPC service number를 TCP/IP port에 mapping 시키는
일을 한다.
RPC를 지원하는 프로그램이 실행되면 그 프로그램은 자신을 portmap에 등록하여 RPC service를 쓸 수 있게 된다.


■ BSD daemons

▷ pagedaemon

pagedaemon 은 BSD virtual memory system의 일부분으로 virtual memory 주소가 실제의 주소로 바뀌었을 때 fault가 발생하면 swap out 되었던 page를 실제 memory로 불러오는 역할을 한다.
더불어 실제 swap space를 관리하는 역할도 pagedaemon이 하게
된다.

▷ swapper : swapping daemon

많은 프로세스가 동시에 실행될 때, 실제 프로세스 수행시간보다 page fault를 처리하는데 더 많은 시간을 쓰게 될 수 있다.
이런 현상을 thrashing이라고 한다.
swapper는 이 page fault 횟수를 감시하고 있다가 thrashing이 발생하면 몇개의 프로세스를 swap space로 옮긴다. 전체가 옮겨진
프로세스는 몇초간은 실행되지 않고 실행순서를 기다리게 된다. swapper는 이런 일을 thrashing이 없어질 때까지 하게 된다.

▷ update : synchronize file system

update daemon은 매 30초마다 sync system call을 발생시켜 내용이 바뀐 disk block을 disk에 써 넣는다.
이렇게 함으로써 system crash가 일어났을 때 손실을 최소화시켜 준다.

▷ lpd : manage BSD printing

lpd는 BSD print spooling system을 관리하는 역할을 한다. lpd는 다른 시스템으로 프린트할 내용을 전송하거나 다른 시스템에서
받아오는 일도 관리한다.

▷ sendmail : transport electronic mail

E-mail을 주고 받는데 관련된 daemon이다.
Configuration file은 보통 /etc/mail/sendmail.cf이다.


■ System V daemon

▷ lpsched : manage System V printing

lpsched는 System V 시스템에서 사용하는 line printer daemon이다. 사용자가 lp명령으로 전달하는 프린트 내용을 받아 queue에 넣어두었다가 프린터에 보내어 출력하는 일을한다.

■ NFS daemons

▷ nfsd : Serve files

nfsd는 NFS server에서 동작하는 daemon으로 NFS client의 request를 관리하는 역할을 한다. nfsd는 자신을 얼마나 많이 fork할 수 있는지를 argument로 받는다.
자세한 설명은 Network administraion의 NFS 부분에 있다.

▷ rpc.mountd : Respond to mount requests

rpc.mountd는 NFS client의 파일시스템 mount request를 받아서 요청한 client가 permission이 있는지를 검사한 뒤 이를 처리하는
일을 한다.
rpc.mountd daemon은 /etc/exports 파일을 참조해서 mount 허가
여부를 판단한다.

▷ rpc.lockd & rpc.statd : Manage NFS locks

rpc.lockd 와 rpc.statd는 별개의 daemon이지만 항상 같이 실행되어 공동으로 작업을 한다. rpc.lockd는 NFS 상에서의 advisory lock을 관리하고, rpc.statd는 NFS에 연결되어 있는 다른 시스템의 상태를 검사하는데 이것을 다른 시스템과 lockd가 통신할 때 참고한다.

▷ biod : Cache blocks

biod(block I/O daemon)은 NFS client가 보내는 read, write request를 cache하는 일을 한다. biod는 NFS가 보다 효율적으로 실행되도록 read-ahead, write-behind buffering을 해준다.

■ NIS daemons

▷ ypbind : Locate NIS servers

ypbind 는 NIS client와 server 양쪽에서 실행되고, client가 해당 정보를 얻을 수 있는 NIS server를 찾아내는 일을 한다. ypbind는 실제로 request를 처리하는 것은 아니고, 단지 어떤 server를 이용하라는 것만을 알려준다.

▷ ypserv : NIS server

ypserv 는 NIS server 시스템에서 실행된다. NIS client가 broadcasting을 통해 server를 찾기 때문에 physical network 상에서 적어도 하나 이상의 ypserv daemon이 있어야 한다.
ypserv는 client가 보내는 query를 받아서 해당 정보를 보내주는 일을 한다.

▷ ypxfrd : Transfer NIS Database

ypxfrd는 NIS database를 효율적으로 slave server로 전송하는데 쓰인다.
Slave server는 ypxfr 명령으로 NIS database를 받을 수 있다.
Master server에서 database가 바뀌면 slave와 master간의 consistency를 유지해야 하기 때문에 slave로 바뀐 database가
보내지고 slave는 새로 받은 database를 사용한다.

▷ rpc.nisd : NIS+ server

rpc.nisd 는 NIS+에서 ypserv의 역할을 하는 daemon이다. 모든 NIS+ server에서 실행되고, -B 옵션을 주면 NIS+에서 제공되는 name service를 제공하는 daemon인 rpc.nisd_resolv를 같이
실행한다.

■ Internet daemons

▷ comsat : Notify users of New Mail

comsat은 사용자에게 새로운 mail이 도착했음을 알려준다. comsat은 새로운 mail이 왔고 /etc/utmp를 검사해서 사용자가 login한
상태이고 biff y 등의 명령으로 mail notification이 설정되어
있으면 사용자에게 새로운 mail이 왔음을 알려준다.

▷ talkd : talk server

talkd 는 talk 프로그램이 보내는 Connection request를 처리한다. Request를 받으면 talkd는 상대방이 있는 시스템과 network connection을 만드는데, 보통은 517 port를 사용하고, 4.3 BSD의 ntalk인 경우는 518 port를 사용한다. 518 port를 사용한 경우는
보통의 talk 명령으로 connection을 만들 수 없다.
또, talkd는 byte order가 다른 시스템과는 connection을 만들 수 없다. 이런 경우 다음과 같은 message가 출력된다.

Checking for invitation on caller's machine

▷ rwhod : Maintain remote user list

rwhod는 사용자가 login하고 있는지에 대한 정보를 관리한다. rwhod는 자신의 시스템의 정보를 broadcast하고, 다른 시스템에서 보내는 정보를 받아서 관리하는데, 이 정보는
rwho나 ruptime과 같은 명령이 참조한다. 보통 rwhod는 매 3분마다 broadcast를 하기때문에 network traffic을 증가시키므로 꼭 필요하지 않다면 이 daemon은 사용하지 않는 것이 좋다.

▷ ftpd : File Transfer server

ftpd는 ftp가 보내는 file transfer request를 처리한다. Resource가 부족하거나 보안이 중요한 시스템에서는 이 기능을 지원하지
않는 경우도 있다. ftpd는 해당 시스템의 사용자가 아니더라도
사용할 수 있도록 (anonymous ftp) 할 수도 있다.

▷ rlogind : Remote login server

rlogind 는 remote login을 관리한다. rlogind는 inetd에 의해 실행되고, /etc/hosts.equiv 파일과 해당 사용자의 /.rhosts 파일에서 사용자가 remote login하려는 시스템이 그 안에 있으면 바로 login을 허가하고, 그렇지 않으면 login 프로그램을 실행시켜 password를 물어본다.

▷ telnetd : Remote login server

telnetd는 TELNET 프로토콜을 사용한다는 것 이외에는 rlogind와 하는 일이 거의 같다.
TELNET 프로토콜은 느리거나 불안정한 link에서 rlgind 보다 더 좋은 성능을 제공하고, 많은 Non-UNIX 시스템에서도 제공하는
프로토콜이다.

▷ rshd : Remote command execution server

rsh이나 rcmd 명령이 rshd daemon을 사용해서 remote command execution을 한다.
Remote 시스템에 대한 권한 검사는 rlogind와 같은 방법으로 하고, 권한이 없는 경우 password를 검사해서 명령 실행 여부를
결정한다.

▷ rexecd : Remote command execution server

rexecd는 시스템에 대한 권한 검사를 하지 않는다는 점을 제외하면 rshd와 같은 기능을 한다.
대신 명령을 내릴 때는 사용자의 ID와 password를 같이 주어야
한다. 이 daemon은 초기에 많이 사용되었지만 요즘은 거의
사용되지 않는다.

▷ rpc.execd : Remote command execution server

rpc.execd는 RPC remote execution daemon이다. 이 daemon은 많이 사용되지 않으며 daemon 자체에 security hole이 있으므로
사용하지 않는 것이 좋다.

▷ routed : Maintain Routing tables

routed는 packet을 주고 받을 때 TCP/IP가 사용하는 routing 정보를 관리한다.
routed는 dynamic routing을 지원하고, route 명령을 사용하여 경로를 지정할 수 있다.

▷ gated : Maintain Complicated Routing Tables

gated는 routed가 사용하는 프로토콜이나 RIP와 같은 여러 routing 프로토콜을 지원한다.
routed보다 gated가 기능이나 성능이 우수하다.

▷ named : DNS server

named는 DNS(Domain Name Service)의 server이다. 이 daemon은 hostname을 ID address로 바꿔주는 일을 한다.

▷ nntpd : Transfer Usenet News
NNTP(Network News Transfer Protocol)은 Internet에서 news article을 전달하는데 사용된다.
이 프로토콜은 사용자가 news를 보낼 때나 시스템간에 많은 news를 전달할 때 모두 사용된다.
nntpd는 NNTP 프로토콜을 지원해주는 daemon이다. 실제로 news를 읽을 때는 rn이나 xrn 등 nntpd를 이용해서 news를 읽어오는
프로그램을 사용한다.

▷ innd & nnrpd : NNTP daemons

innd와 nnrpd는 INN package에서 사용하는 NNTP server이다.
innd는 다른 news 시스템과의 접속을 관리하는 역할을 하고,
nnrpd는 사용자가 실제로 news를 읽을 때 필요한 여러가지
일을 해 준다.

▷ syslogd : Process Log messages

syslogd는 시스템에서 발생하는 여러가지 상태정보와 error 메시지를 관리하는 일을 한다.
syslogd를 사용하기 전에는 daemon이 error 메시지를 직접 system console에 출력하거나 daemon의 private log file에 기록했지만
요즘은 syslog library routine을 사용해서 syslogd에 메시지를
보낸다.

▷ fingerd : Look up users

fingerd 는 시스템의 사용자에 대한 정보를 제공해 준다. 보통 finger 명령을 사용해서 정보를 얻을 수 있는데, 이 경우 fingerd는 /etc/passwd 파일과 사용자 home 디렉토리의 .plan, .project 파일을 참고해서 사용자에 대한 정보를 보내준다.

▷ httpd : World-Wide Web server

httpd는 WWW hypertext document를 지원해주는 server이다. httpd는 문서, 그림, 소리 등의 정보를 Mosaic이나 Netscape같은 httpd client에게 제공한다.


■ Daemons for diskless clients

▷ bootpd : Boot server

Diskless client가 booting할 때 network에 BOOTP request를 broadcast한다. bootpd가 이 request를 받으면 diskless client의 Ethernet address를 /etc/bootptab 파일에서 찾는다. 맞는 필드가 있으면 bootpd는 client에게 IP address를 알려주고 boot에 필요한 파일을 TFTP나 NFS를 통해 보내준다.

▷ tftpd : Trivial file transfer server

tftpd는 ftp와 비슷한 기능을 하지만 훨씬 간단하게 파일을 주고 받을 수 있도록 해준다.
보통 diskless client가 boot image를 받을 때 사용한다.

▷ rarpd : Map Ethernet address to IP address

rarpd는 RARP(Reverse Address Resolution Protocol)를 지원해주는 daemon 이다.
이 프로토콜은 diskless client가 자신의 IP address를 결정할 수 있도록 해준다.
rarpd는 /etc/ethers와 /etc/hosts 파일을 이용해서 address mapping을 한다.

▷ bootparamd : Advanced Diskless Life Support

bootparamd는 /etc/bootparams 파일에서 diskless client에 필요한 파일시스템의 위치를 알아내고, NFS를 사용하여 파일시스템을 mount할 수 있도록 해준다. 

위의 정보가 도움이 되셨나요? 그렇다면 댓글 하나만 남겨주세요.
댓글 하나가 운영자에겐 커다란 힘이 됩니다!

  1. bruce

    | 2009/06/22 08:32 | PERMALINK | EDIT | REPLY |

    좋은 참고 되었습니다~^^

  2. 박수용

    | 2010/04/26 16:19 | PERMALINK | EDIT | REPLY |

    감사요

Write your message and submit
« PREV : 1 : ... 113 : 114 : 115 : 116 : 117 : 118 : 119 : 120 : 121 : ... 436 : NEXT »