zoukankan      html  css  js  c++  java
  • linux守护进程 daemon 详解

    daemon
      系统为了某些功能必须要提供一些服务(不论是系统本身还是网络方面),这个服务就是service.实现这个service的程序称为daemon.
     
    daemon主要分为两类
      stand alone:此daemon可以自行单独启动服务
      super daemon:一个特殊的daemon来同一管理
      这个特殊的daemon被称为super daemon ,即 xinetd.特点在于,当没有客户端的请求时,各项服务都是未启动的情况,等到有来自客户端的请求时,super daemon 才唤醒对应的服务。当客户端的请求结束后,被唤醒的这个服务也会关闭并释放系统资源。
      这两类 daemon 可以同时存在于内存中。

      文件 /etc/services 中存有端口号与服务的一一对应,不建议修改,除非要建设一个地下网站。

    daemon 的启动脚本与启动方式
    /etc/init.d/* : 启动脚本放置处
      系统上几乎所有的服务启动脚本都放在这里。

    /etc/sysconfig/* : 各服务的初始化环境配置文件
     
    /etc/xinetd.conf,/etc/xinetd.d/* :super daemon配置文件
      super daemon 的主要配置文件为 /etc/xinetd.conf,但它管理的其他 daemon 的设置则写在 /etc/xinetd.d/* 里面。

    /etc/* : 各服务各自的配置文件

    /var/lib/* : 各服务产生的数据库

    /var/run/* : 各服务的程序的PID记录处


    stand alone 的 /etc/init.d/* 启动
      几乎系统上面所有的启动脚本都在 /etc/init.d/ 下面,所以可以这样启动:
      #/etc/init.d/syslog {start|stop|status|condrestart}
      例如:#/etc/init.d/syslog status

      CentOS还提供另外一种启动方式,即service:
           /sbin/service
      #service [service name] (start|stop|restart|...)
      #service --status-all
         service name:就是需要启动的服务名称
         start|...:就是该服务要进行的工作
         --status-all:将系统所有的stand alone的服务状态全部列出来

      例子:#service crond restart
    #/etc/init.d/crond restart
    这两个效果一样,但是后一种一定得记住。


    super daemon 的启动方式
      super daemon 自己启动方式与 stand alone 相同,但它管理的其他 daemon 就不是这样了。必须要在配置文件中设置为启动该 daemon 才行,配置文件就是 /etc/xinetd.d/* 的所有文件。
      查看super daemon 管理的服务是否启动:
    #grep -i 'disable' /etc/xinetd.d/*
    [root@scctmpdev01:/etc/vsftpd]#grep -i 'disable' /etc/xinetd.d/*
    /etc/xinetd.d/chargen-dgram:    disable         = yes
    /etc/xinetd.d/chargen-stream:   disable         = yes
    /etc/xinetd.d/daytime-dgram:    disable         = yes
    /etc/xinetd.d/daytime-stream:   disable         = yes
    /etc/xinetd.d/discard-dgram:    disable         = yes
    /etc/xinetd.d/discard-stream:   disable         = yes
    /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/time-dgram:       disable         = yes
    /etc/xinetd.d/time-stream:      disable         = yes

    要启动某项服务,如rsync:
    1.修改配置文件
      #vim /etc/xinetd.d/rsync
    disable=no       ==>要有这一行,把yes改成no
    2.重新启动xinetd这个服务
      #/etc/init.d/xinetd restart
    3.查看启动的端口
      #grep 'rsync' /etc/services
      #netstat -tnlp |grep 873
        启动的服务并非rsync,而是xinetd,因为它要控制 rsync.
      也就是说,当你以这种方式启动时,先得修改 /etc/xinetd.d/ 下面的配置文件,然后再启动xinetd就对了。而 xinetd 是一个 stand alone 启动的服务。
    ref:http://blog.chinaunix.net/uid-28216282-id-3377969.html

  • 相关阅读:
    10分钟搞懂树状数组
    POJ3278 爆搜,不要像我一样作死就好
    POJ3278 爆搜,不要像我一样作死就好
    UVA 12174 播放器,滑动窗口
    UVA 12174 播放器,滑动窗口
    UVA 12627 气球胀啊胀
    UVA 12627 气球胀啊胀
    UVALive 4487 异或 并查集
    UVALive 4487 异或 并查集
    paste指令的使用
  • 原文地址:https://www.cnblogs.com/dotagg/p/6558632.html
Copyright © 2011-2022 走看看