next up previous contents
Next: 開機啟動服務 Up: 開機流程與系統服務 Previous: 開機流程   Contents

daemon 與服務 (service)

  1. daemon 分類:
    1. stand alone:可以自行單獨啟動服務
      1. 啟動並載入到記憶體後就一直佔用記憶體與系統資源。
      2. 一直存在記憶體內持續的提供服務,回應速度較快。
      3. 常見的stand alone daemon有WWW的daemon (httpd)、FTP 的 daemon (vsftpd)。
    2. super daemon:daemon xinetd 統一管理
      1. 當沒有用戶端要求時,各項服務都是未啟動的情況,
      2. 有用戶端要求時,super daemon 才喚醒相對應的服務。
      3. 當用戶端的要求結束後,被喚醒的這個服務也會關閉並釋放系統資源。
      4. 服務的反應時間比較慢,pxe server中的tftp就是典型的super daemon 所管理的服務。
  2. 服務與埠口的對應
    [root@deyu ~]# lsof -i -n -P | grep LISTEN
    rpcbind    *:111 (LISTEN)
    named      127.0.0.1:53 (LISTEN)
    named      127.0.0.1:953 (LISTEN)
    cupsd      127.0.0.1:631 (LISTEN)
    sshd       *:22 (LISTEN)
    vsftpd     *:21 (LISTEN)
    dnsmasq    192.168.122.1:53 (LISTEN)
    qemu-kvm   127.0.0.1:5900 (LISTEN)
    httpd      *:80 (LISTEN)
    
    [root@deyu ~]# cat /etc/services | grep '\ 22/tcp' 
    ssh             22/tcp        # The Secure Shell (SSH) Protocol
    

  3. Stand alone的啟動
    1. 以/etc/init.d/*直接啟動
      [root@deyu ~]# /etc/init.d/sshd 
      Usage: /etc/init.d/sshd {start|stop|restart|reload|force-reload|condrestart|try-restart|status}
      [root@deyu ~]# /etc/init.d/sshd status
      openssh-daemon (pid  2062) is running...
      [root@deyu ~]# /etc/init.d/sshd restart
      Stopping sshd:                                             [  OK  ]
      Starting sshd:                                             [  OK  ]
      
    2. 以指令service啟動
      [root@deyu ~]# service sshd
      Usage: /etc/init.d/sshd {start|stop|restart|reload|force-reload|condrestart|try-restart|status}
      [root@deyu ~]# /etc/init.d/sshd 
      [root@deyu ~]# service sshd stop
      Stopping sshd:                                             [  OK  ]
      [root@deyu ~]# service sshd status
      openssh-daemon is stopped
      [root@deyu ~]# service sshd start
      Starting sshd:                                             [  OK  ]
      
  4. Super daemon的啟動
    [root@deyu ~]# grep -i 'disable' /etc/xinetd.d/*
    /etc/xinetd.d/echo-dgram:	disable		= yes
    /etc/xinetd.d/echo-stream:	disable		= yes
    /etc/xinetd.d/rsync:		disable		= yes
    /etc/xinetd.d/tcpmux-server:	disable		= yes
    /etc/xinetd.d/tftp:		disable		= yes
    
    [root@deyu ~]# grep '^tftp' /etc/services 
    tftp            69/tcp
    tftp            69/udp
    tftp-mcast      1758/tcp
    tftp-mcast      1758/udp
    tftps           3713/tcp                # TFTP over TLS
    tftps           3713/udp                # TFTP over TLS
    
    [root@deyu ~]# netstat -tlun | grep :69
    
    [root@deyu ~]# vi /etc/xinetd.d/tftp 
    service tftp
    {
    	socket_type		= dgram
    	protocol		= udp
    	wait			= yes
    	user			= root
    	server			= /usr/sbin/in.tftpd
    	server_args		= -s /var/ftp/pub/usb/isolinux
    	disable			= no
    	per_source		= 11
    	cps			= 100 2
    	flags			= IPv4
    }
    
    [root@deyu ~]# /etc/init.d/xinetd restart 
    Stopping xinetd:                                           [  OK  ]
    Starting xinetd:                                           [  OK  ]
    
    [root@deyu ~]# netstat -tlun | grep :69
    udp        0      0 0.0.0.0:69                  0.0.0.0:*
    
  5. 以service查詢所有服務狀態
    [root@deyu ~]# service --status-all | grep xinetd
    xinetd (pid  4149) is running...
    
  6. 以netstat觀察網路服務
    [root@deyu ~]# netstat -tlun
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address          Foreign Address State   PID/Program name
    tcp        0      0 *:ftp                  *:*             LISTEN  2081/vsftpd     
    tcp        0      0 deyu.wang:domain       *:*             LISTEN  1785/named      
    udp        0      0 deyu.wang:domain       *:*                     1785/named      
    
    [root@deyu ~]# netstat -tlunp
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address          Foreign Address State   PID/Program name
    tcp        0      0 0.0.0.0:21             0.0.0.0:*       LISTEN  2081/vsftpd     
    tcp        0      0 127.0.0.1:53           0.0.0.0:*       LISTEN  1785/named      
    udp        0      0 127.0.0.1:53           0.0.0.0:*               1785/named
    



2015-04-13