Chinaunix首页 | 论坛 | 博客
  • 博客访问: 97733
  • 博文数量: 21
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 200
  • 用 户 组: 普通用户
  • 注册时间: 2014-10-11 22:44
个人简介

HUST16届准毕业生,发奋求职中...

文章分类

全部博文(21)

文章存档

2015年(17)

2014年(4)

我的朋友

分类: 系统运维

2015-05-27 00:28:02

   在学习xorp安装的时候,正好看到unix高级环境编程的守护进程部分,通过对xorp的安装正好巩固下守护进程的知识。

    
   守护进程是在系统自举时启动的,仅在系统关闭时停止。守护进程没有控制终端,因而是在系统后台运行的。
我在安装xorp的时候,发现xorp正好和我看到的守护进程完全相符,而且xorp的开发也严格遵守了unix高级环境编程中提倡的规则。
1、开机自启动
xorp提供了一个开启自启动的bash脚本,位于/etc/init.d/xorp, /etc/init.d/目录是在主机启动的时候执行的,从而保证了xorp服务开机自启动,

2、单实例守护进程。
为了正常运行,某些守护进程为单实例运行的,即在任一时刻只运行该守护进程的一个副本。
那么如何保证只有一个副本在运行呢,书中提供了一种方式:使用记录锁和文件锁。如果守护进程创建一个文件,并且在整个文件上加上一把写锁,那写锁只有一把,如果之后再创建写锁就会失败,以此向后续的守护进程副本指明已有一个 副本在运行。

而我在xorp官网文档中也看到这样的描述:
XORP will not start at boot until an init script is created for it. Because this is installation-specific it is generally left up to the package maintainer (distribution). The following example runs XORP as a daemon with a log file in var/log/xorp an expected configuration file in/etc/xorp/config.boot and a PID file in /var/run/xorp.pid and is generally created as /etc/init.d/xorp.


在unix高级环境编程书中所倡导的惯例中提到:若守护进程使用锁文件,则该文件通常保存在/var/run/目录下,通常锁文件的名字为name.pid,其中name指服务的名字。若守护进程含有配置文件,则配置文件应放在/etc/目录下,命名为name.conf,这里xorp是在/etc下创建了一个xorp/子目录,所有的配置文件放在该目录下,我猜测应该是xorp之后使用的配置文件可能比较多,单独创建目录可能更整齐些,便于管理,而不是因为其他技术上的要求。
开机自启动时默认加载哪个配置文件,需要查看/etc/init.d/xorp。

3、出错记录
因为xorp是作为守护进程在后台运行的,没有控制终端,因而不能将出错信息在终端显示。而xorp也不是自己单独将出错谢谢写入自己定义的出错文件中去,而是通过linux提供的一个集中的守护进程出错记录措施。
linux提供的出错管理机制有3三种:
3.1、对内核进程而言,她可以直接调入log函数,然后直接读取/dev/klog中的报错信息。

3.2、对大多数用户进程(守护进程)通过调用syslog函数来产生日志消息,然后发送给/dev/log函数

3.3、该主机的一个用户进程,或者通过tcp/ip连到该主机的其他主机的用户进程,可将日志消息发送给UDP端口514


而xorp是采用的第二种方式,他的日志文件保存在/var/log/xorp下。

当安装完xorp后,使用 ps -xaj | grep xorp 打印运行xorp的守护进行,输出如下:

其中各列依次代表父进程id,进程id,进程组id,会话id,终端名称,终端进程组id,用户id和命令字符串,
其中终端名称为?,终端进程组id为-1,代表这些进程是没有终端的守护进程。
阅读(1414) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~