• 守护进程和inetd(转)


    定义: 守护进程 daemon 是在后台运行不受终端控制的进程。

    启动方法:

    1.        很多守护进程是系统初始化脚本启动的,一般在/etc目录或者/etc/rc开头的目录

    2.        很多网络服务器是由inetd超级服务器启动的

    3.        cron守护进程按规定的时间启动某个程序,可以把你的程序定个时间由他启动

    4.        at命令制定某一时刻启动某个进程

    5.        也可以在用户终端启动,一般在测试守护进程或者守护进程需要重启时使用

    由于守护进程没有控制终端,所以他不能打印到终端上,当出现错误时,需要记录下来,就用到了下面这个函数;

    <syslog.h>

    void syslog(int priority, const char *message, …..)

    priority是级别(level)和设施(facility)的组合,可以查看相关文档查找level , facility

    (见《unix 网络编程 第一卷》)

    void openlog(const char *ient, int options, int facility)

    void closelog(void)

    用于开启和关闭log的发送

    发送消息的位置为:/var/run/log (/dev/log)

    路径名/dev/klog 内核中的所有出错信息作为这个设备的输入实现

    怎样才能产生一个守护进程呢?

    1.       首先调用fork,然后父进程终止,子进程继续运行。子进程继承了父进程的进程组号,但拥有自己的进程号,保证其不是一个进程组头

    2.       setsid 函数,创建一个session,(具体参见《unix环境高级编程》第九章),此时这个进程变成了新会话头,和新进程组的组长,不在控制终端

    3.       忽略SIGHUP信号再次fork, 这次函数返回的是第二次生成子进程,第一次的子进程是他的父进程,并且也终止了

    第三步为了保证进程不再拥有终端

    inetd 守护进程

           我们在网络编程时会发现,开始的几步都是基本一样的,对于服务器这一端,我们会使用socket, bind, listen ,accept 基本步骤相同,能不能把这几步形成一个总的,当有申请链接来时都调用一个进程链接,然后根据不同的申请fork子进程执行相应的程序呢?答案就是只用inetd守护进程。

           inetd守护进程是Linux自己的,他作为一个守护进程,处理请求,我们要做的是给他提供当对于某种链接,某个接口的请求时所要启动的程序就可以了。

           一般在/etc/inetd.conf中配置。

    例如:

    ftp   stream     tcp   nowait     root        /usr/bin/ftpd    ftpd –l

    下面是针对上面的参数进行解释,一一对应。

    service-name    必须是在/etc/services文件中已定义的服务名

    socket-tye    stream(TCP)dgram(UDP)

    protocol      不许再/etc/protocols文件中已定义:tcp或者UDP

    wait-flag      一般TCPnowait,UDPwait

    login-name     /etc/passwd 中的用户名,一般为root

    server-program exec使用的全路径名

    server-program-arguments exec使用的参数

    不过应当注意的是最近版本好像不使用这个方法了,而是使用xinetd.*的方式,也有一定的格式,

  • 相关阅读:
    CentOS6.5 [ERROR] /usr/libexec/mysqld: Can't create/write to file '/var/lib/mysqld/mysqld.pid' (Errcode: 2)
    linux防火墙
    Linux磁盘分区与LVM详解
    LVM分区扩展空间
    linux 分区方法(超过2T的硬盘)
    linux异常处理:selinux配置错误导致无法重启
    linux网卡配置文件
    Zabbix4.0系统clone、mass update使用
    Zabbix系统配置日志监控告警--关键字触发
    Zabbix4.0系统配置事件通知
  • 原文地址:https://www.cnblogs.com/demonspider/p/2787176.html
Copyright © 2020-2023  润新知