守护进程
守护进程基本概念
守护进程基础特征
创建守护进程基本步骤
出错记录
单实例守护进程
守护进程的惯例
守护进程的客户-服务器模型
一、守护进程基本概念
守护进程,也就是通常说的Daemon进程,是Linux中的后台服务进
程。它是一个生存期较长的进程,通常独立于控制终端并且周期
性地执行某种任务或等待处理某些发生的事件。守护进程常常在
系统引导装入时启动,在系统关闭时终止。
因为守护进程没有控制终端、所以说它们是在后台运行的。
守护进程类似于Windows系统下的Service
一、守护进程基本概念
由于在Linux中,每一个系统与用户进行交流的界面称为终端,每一
个从此终端开始运行的进程都会依附于这个终端,这个终端就称
为这些进程的控制终端,当控制终端被关闭时,相应的进程都会
自动关闭。但是守护进程却能够突破这种限制,它从被执行开始
运转,直到整个系统关闭时才退出。如果想让某个进程不因为用
户或终端或其他地变化而受到影响,那么就必须把这个进程变成
一个守护进程。
一、守护进程基本概念
d、crond、keventd等等,守护进程一般
以d结尾(结尾字母d是Daemon的意思)。
查看守护进程: ps axj
参数a表示不仅列当前用户的进程,也列出所有其他用户的进程,参
数x表示不仅列有控制终端的进程,也列出所有无控制终端的进
程,参数j表示列出与作业控制相关的信息。
凡是TPGID一栏写着-1的都是没有控制终端的进程,也就是守护进
程。在COMMAND一列用[]括起来的名字表示内核线程,这些线
程在内核里创建,没有用户空间代码,因此没有程序文件名和命
令行,通常采用以k开头的名字,表示Kernel。
二、守护进程基本特征
守护进程有三个最基本的特点:后台运行,独立于终端,完成一定
的任务。
首先所谓的后台运行过程是一般是在图形界面或是终端不可见的;
而独立于终端是说它不和终端联系,运行之后一般不接受终端的
输入也不向终端输出;而完成一点的任务是每一个守护进程的运
行都是为了完成一定的任务而运行的,这些任务一般都是系统相
关的任务。
也就是控制台除开这些特殊性以外,守护进程与普通进程基本上没
有什么区别。因此,守护进程可以由一个普通进程按照上述的守
护进程的特性而改造成为守护进程。
三、创建守护进程基本步骤
相关概念:
进程组:进程组是一个或多个进程的集合。每运行一个程序或是命
令就会产生一个进程组,而每一个进程组有以个组长进程,一般
进程组的第一个进程是组长进程,组长进程fork的进程也属于同
一个进程组,但是子进程一旦执行exec等就会不属于该进程组。
子进程也可以成为组长进程。组长进程的进程id与其组进程id相
同。
会话:一次登录形成一个会话。一个会话可包含多个进程组, 但只能
有一个前台进程组. setsid 可建立一个新的会话。
控制终端:会话的首进程进程(session leader)打开一个终端之后, 该
终端就成为该会话的控制终端与控制终端建立连接的会话领头
进程称为控制进程,一个会话只能有一个控制终端,产生在控制终
端上的输入和信号将发送给会话的前台进程组中的所有进程。终
端上的连接断开时(比如网络断开或 Modem 断开), 挂起信号将
发送到控制进程(session leader) 。
三、创建守护进程基本步骤
1、调用umask将文件模式创建屏蔽字设置为0。由继承得来的文件
方式创建的屏蔽字可能会拒绝设置某些权限,所以要重新赋于所
有权限。例如我们的守护进程需要创建一个组可读写的文档,而
此守护进程从父进程那里继承来的文档创建方式屏蔽字却有可能
屏蔽掉了这两种许可权,则新创建的一组文档其读或写操作就不
能生效。因此要将文档方式创建屏蔽字配置为"0"。
三、创建守护进程基本步骤
2、调用fork()函数创建子进程,然后中止父进程(exit),保留子进程
继续运行。因为,当一个进程是以前台进程的方式由shell启动时,假如
中止了父进程,子进程就会自动转为后台进程。另外,在下一步时,我
们需要创建一个新的会话期,这就需要创建会话期的进程不是一个进程
组的组长进程。当父进程中止,子进程继续运行时,就确保了进程组的
组ID和子进程的进程ID不会相等。
三、创建守护进程基本步骤
3、确保进程不会获得任何控制终端。这是为了避免在关闭某些终端
时会显示有程序正在运行而无法关闭的情况。这一步通常的做法
是:调用函数setsid()创建一
7.0守护进程 来自淘豆网m.daumloan.com转载请标明出处.