linux守护进程实践,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/*

要启动某项服务,如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 启动的服务。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux守护进程,也称为后台进程或服务进程,是一种在系统启动后持续运行并执行特定任务的程序。它们通常不会因为用户会话结束而关闭,即使用户注销或系统重启,这些进程也会继续运行。 在Linux中,让一个程序以守护进程的方式启动主要有以下几种方法: 1. **使用init或systemd**:Linux传统的初始化系统init(现在大多数发行版使用systemd)提供了`start`、`stop`、`restart`等命令来控制服务。在`/etc/init.d`目录下有对应的脚本文件,如`myservice.sh`,通过`sudo service myservice start`命令启动。 2. **systemctl**: 对于systemd系统,可以在`/etc/systemd/system`目录创建或编辑服务单元文件(如`myservice.service`),然后用`sudo systemctl start myservice`启动,或在`systemctl`命令行工具中使用更灵活的选项。 3. **cron jobs**:通过定时任务计划器cron,可以设置守护进程在特定时间或周期性地执行。 4. **写入rc.local或类似文件**:在系统的启动脚本中,如`/etc/rc.local`,添加守护进程启动的命令。 5. **环境变量**:有些服务可能会设置环境变量,如`DAEMON`或`PIDFILE`,用于指示其为守护进程运行,并提供进程ID供管理。 为了确保守护进程能在系统重启后自动启动,通常会在启动脚本的末尾加上`exit 0`(表示成功启动)或在systemd服务文件中设置`After=network.target`(等待网络服务启动后启动)。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值