linux 服务脚本分析

linux 服务脚本分析:

以isc-dhcp-server 为例子. 我们跟踪阅读一下linux服务运行过程。

1. 启动(start)服务

sudo service isc-dhcp-server start
service 是一个脚本文件,其经过sh脚本处理,其结果等价于
/etc/init.d/isc-dhcp-server start
停止(stop)也同此理.
这样我们知道,第一个域是服务程序本身, start/stop 是程序参数

2. 服务程序大本营.

服务程序存身于/etc/init.d/,
这是服务的大本营, isc-dhcp-server 就存身于此
它是一个脚本文件,我们继续追查其工作原理,
才能知道服务的真身到底是谁! 例如 isc-dhcp-server, 其start 是启动 /usr/sbin/dhcpd文件,当然附带一堆启动参数.
–exec /usr/sbin/dhcpd – -q O P T I O N S − c f " OPTIONS -cf " OPTIONScf"DHCPD_CONF" -pf “$DHCPD_PID” $INTERFACES
而服务的停止很简单,是根据一个进程的PID 文件去停止这个进程.
为什么要包装这层shell, 第一为了方便管理,第二它把进程的执行结果向syslog中进行了打印.
观察/var/log/syslog 是你调试服务的一个好方法.

3. 底层或真实服务程序的参数是什么呢?

当然都是字符串,它们可能代表文件名,或者是简单字符串
例如本例, O P T I O N S : 简 单 字 串 , OPTIONS:简单字串, OPTIONS:,DHCPD_CONF:配置文件名,$DHCPD_PID:PID文件名

DHCPD_CONF=${DHCPD_CONF:-/etc/dhcp/dhcpd.conf}
DHCPD_PID="${DHCPD_PID:-/var/run/dhcpd.pid}"

这里引出第二个目录,配置文件所在目录,它往往存在于/etc/服务目录/服务.conf
配置文件是只有服务程序才认识的描述语法,当然也要方便人阅读.
也是人机交互的通道,服务不能启动往往也是配置不符合要求. 例如少写了一个分号;

4. /etc/default/服务名

这个文件会由服务程序读入,作为shell脚本变量而存在,从而定义了一些shell 变量供脚本服务分析
例如:

DHCPD_DEFAULT="${DHCPD_DEFAULT:-/etc/default/isc-dhcp-server}"
[ -f "$DHCPD_DEFAULT" ] && . "$DHCPD_DEFAULT"

5. /etc/init/服务名

初始化脚本文件,是一个.conf文件,是为upstart 准备的,它包含upstart jobs
虽为conf后缀名,实际上应是sh脚本,
描述了一个预启动脚本和respawn 脚本
当init下upstart jobs 与 init.d下system V init 脚本同名时,优先执行upstart jobs.
:man 5 init, man 8 init

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值