网站大量收购闲置独家精品文档,联系QQ:2885784924

第8单元 守护进程.ppt

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第8单元 守护进程

Linux系统编程 第8单元 守护进程 * 第8单元 守护进程 8.1 守护进程特征 8.2 编程规则 8.3 出错记录 守护进程概述 守护进程,精灵进程daemon,通常完成一些日常事务活动,如作业规划进程crond,打印进程lqd,以及网络服务等 通常随系统启动,在系统关闭时终止。后台运行,没有控制终端。主要原因有两点: 用来启动守护进程的终端在启动守护进程之后,需要执行其他任务。(如其他用户登录该终端后,以前的守护进程的错误信息不应出现) 由终端上的一些键所产生的信号(如中断信号),不应对以前从该终端上启动的任何守护进程造成影响。 守护进程分类 守护进程分类 独立启动守护进程stand_alone 该类进程启动后就常驻内存,所以会一直占用系统资源。其最大的优点就是它会一直启动,当外界有要求时相应速度较快,像httpd等进程; 由xinetd启动的守护进程 系统启动时由一个统一的守护进程xinet来负责管理,当相应请求到来时需要通过xinet的转接才可以唤醒被xinet管理的进程。只有xinet这一守护进程占有系统资源,其他的内部服务并不一直占有系统资源,只有数据包到来时才会被xinet管理员来唤醒。 chkconfig --list 查看,有运行级别的是独立启动的,没有的是由xinetd启动的。 * 守护进程特征 ps axj命令查看 父进程为init——PPID为1 以超级用户特权运行——UID为0 没有控制终端——TTY为?, TPGID为-1 启动守护进程的方法 在系统启动时由系统初始化脚本启动,这些脚本一般在/etc/rc*.d开头的目录。 由inetd超级服务器启动的,如telnetd、ftp等; 由cron 定时启动 由at启动。 守护程序也可以从终端启动,通常这种方式只用于守护进程的测试,或者是重启因某种原因而停止的进程。 守护进程编程规则 1调用umask将文件模式创建屏蔽字设为0 避免因为屏蔽字某些权限无法设置 2调用fork,父进程退出,子进程继续 保证子进程不是一个进程组组长,为创建新会话准备 3调用setsid创建新会话 子进程成为新会话首进程,新进程组长,无控制终端 4再次调用fork,父进程退出,子进程继续 保证新子进程不再是会话首进程,无法再次获得控制终端 5调用chdir将当前工作目录更改为根目录 避免当前目录被卸载 * 守护进程编程规则 6关闭不再需要的文件描述符 关闭从父进程继承来的文件描述符,避免某些文件始终打开 7打开/dev/null设备,将文件描述符012重定向其上 任何对标准输入/输出/错误输出的函数不会有任何效果,因为没有控制终端。 8调用openlog函数 打开系统日志服务syslogd的连接 P343 程序13-1 在main函数调用后进程即变成守护进程运行 * * 第8单元 守护进程 8.1 守护进程特征 8.2 编程规则 8.3 出错记录 登记出错信息 由于守护进程没有控制终端,在发生问题时它要用一些其它方式以输出消息。 可以通过向文件里写数据来输出消息,但这样不好管理,因为每一个守护进程要对应一个文件。 一般用syslogd守护进程来登记出错信息。 syslogd守护进程接收到守护进程发来的消息后,根据配置文件/etc/syslog.conf,决定不同类型消息送往何处。 记录在磁盘文件中 显示在终端上 转发给其他主机的syslogd 登记出错信息 三种方法可以产生发给syslogd的日志消息 内核例程调用log函数 用户进程调用syslog函数 用户进程或网络进程向 UDP端口514发送消息 syslogd相关函数 syslog函数用于向syslogd发送消息 用法与printf类似,增加第一项代表消息设施和级别 openlog函数可选,一般用于在每条消息中增加附加信息。 closelog函数可选,关闭被用于与syslogd通信的描述符。 * openlog/closelog函数 void openlog(const char *ident, int option, int facility); void closelog(void); openlog函数在第一次调用syslog之前调用,当不再需要发送登记消息时可调用closelog函数; ident:一个字符串,它将被加到每条登记消息前面; option:由以下值位或运算组合而成。 LOG_CONS如果不能发往syslogd守护进程,则登记到控制台上 LOG_NDELAY立即打开与syslogd连接,不延迟,否则要等到发送第一条消息 LOG_PERROR既发往syslogd守护进程,又登记到标准错误输出 LOG_PID登记每条消息的进程ID facility:为后面没有设置设施的syslog调用设置

文档评论(0)

wyjy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档