linux守护进程

PHP 实现守护进程

扶醉桌前 提交于 2020-01-03 15:50:13
守护进程 守护进程作为一种常驻进程服务,很常见,例如 PHP-FPM, NGINX,REDIS,都需要一个父进程来支持整个服务。但是用 PHP 编写守护进程不多见,今天就来用 PHP 来实现一下。 步骤 ● fork 子进程 ● 父进程退出 ● 设置新的会话 ● 重置文件掩码 ● 关闭标准输入输出 实现 我们对着以上的步骤来实现,在这之前需要 pcntl 和 posix 扩展,请确保安装了。 function daemon() { $pid = pcntl_fork(); // fork 失败 if ($pid < 0) { exit('fork failed'); } else if ($pid > 0) { // 退出父进程 exit(0); } // 设置新的会员 // setsid 有几个注意点 // 不能是进程组的组长调用 // 对于进程组组员调用会产生新的会话和进程组,并成为该进程组的唯一成员,调用的进程将脱离终端 if (posix_setsid() < 0) { exit('set sid failed'); } // 重置文件掩码 umask(0); // 切换工作目录 chdir('/'); // 关闭标准输入输出 fclose(STDIN); fclose(STDOUT); fclose(STDERR); } 细节 // 获取进程ID var_dump

linux 守护进程

蓝咒 提交于 2019-12-31 22:29:22
Linux系统在启动的时候就已经启动了很多的进程信息。 root@ubuntu:/# ps -ef (系统启动就有了,相当于windows的服务) UID PID PPID C STIME TTY TIME CMD root 1 0 0 04:27 ? 00:00:01 /sbin/init auto noprompt root 4 2 0 04:27 ? 00:00:00 [kworker/0:0H] root 6 2 0 04:27 ? 00:00:00 [mm_percpu_wq] root 7 2 0 04:27 ? 00:00:00 [ksoftirqd/0] root 8 2 0 04:27 ? 00:00:00 [rcu_sched] 守护进程是后台运行的,随着操作系统的启动而启动。相当于windows的服务。 守护进程分为2大类:1.系统级守护进程(硬件管理级的,登陆级的)。2.网络级的守护进程(蓝牙,拨号,web服务器,应用服务器,ftp服务器,邮件服务器,)。 (ps是查看进程信息) root@ubuntu:/# ps -ef | grep init root 1 0 0 04:27 ? 00:00:01 /sbin/init auto noprompt (init进程) root 5177 5136 0 05:12 pts/2 00:00:00 grep -

linux常见服务器端口

柔情痞子 提交于 2019-12-24 16:58:29
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> linux 常见服务端口 2008-01-21 16:24:52 分类: LINUX 转 Linux 服务器在启动时需要启动很多系统服务,它们向本地和网络用户提供了Linux的系统功能接口,直接面向应用程序和用户。提供这些服务的程序是由 运行在后台的守护进程(daemons) 来执行的。守护进程是生存期长的一种进程。它们独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件。他们常常在系统引导装入时启动,在系统 关闭时终止。linux系统有很多守护进程,大多数服务器都是用守护进程实现的。同时,守护进程完成许多系统任务,比如,作业规划进程crond、打印进 程lqd等。有些书籍和资料也把守护进程称作:“服务”。选择运行哪些守护进程,要根据具体需求决定。查看系统可以提供的守护进程对应的服务,使用下面方 法,以root权限运行: #ntsysv 图1 可以选择的系统服务 界面如图1所示的窗口,下面详细介绍一下各项系统服务的功能。以英文字母为序: 一、Linux守护进程简介 1.alsasound :Alsa声卡驱动守护程序。Alsa声卡驱动程序本来是为了 一种声卡Gravis UltraSound(GUS)而写的,该程序被证 明很优秀,于是作者就开始为一般的声卡写 驱动程序。 Alsa和OSS/Free

linux各项系统服务的功能

核能气质少年 提交于 2019-12-24 16:58:12
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> Linux 服务器在启动时需要启动很多系统服务,它们向本地和网络用户提供了Linux的系统功能接口,直接面向应用程序和用户。提供这些服务的程序是由运行在后台的守护进程(daemons) 来执行的。守护进程是生存期长的一种进程。它们独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件。他们常常在系统引导装入时启动,在系统 关闭时终止。linux系统有很多守护进程,大多数服务器都是用守护进程实现的。同时,守护进程完成许多系统任务,比如,作业规划进程crond、打印进 程lqd等。有些书籍和资料也把守护进程称作:“服务”。选择运行哪些守护进程,要根据具体需求决定。查看系统可以提供的守护进程对应的服务,使用下面方 法,以root权限运行: 界面如图1所示的窗口,下面详细介绍一下各项系统服务的功能。以英文字母为序: 一、Linux守护进程简介 1.alsasound :Alsa声卡驱动守护程序。Alsa声卡驱动程序本来是为了 一种声卡Gravis UltraSound(GUS)而写的,该程序被证 明很优秀,于是作者就开始为一般的声卡写 驱动程序。 Alsa和OSS/Free 及OSS/Linux兼容,但是有自己的接 口,甚至比OSS优秀。 2.acpid:acpid(Advanced Configuration

linux的守护进程init.d和xinetd.d

时间秒杀一切 提交于 2019-12-24 16:35:32
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> Linux 服务器在启动时需要启动很多系统服务,它们向本地和网络用户提供了Linux的系统功能接口,直接面向应用程序和用户。提供这些服务的程序是由运行在后台的守护进程来执行的。守护进程是生存期长的一种进程。它们独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件。他们常常在系统引导装入时启动,在系统关闭时终止。linux系统有很多守护进程,大多数服务器都是用守护进程实现的。同时,守护进程完成许多系统任务,比如,作 业规划进程crond、打印进程lqd等。有些书籍和资料也把守护进程称作:“服务”。 守护进程,也就是指daemon和service。 二 Linux守护进程的分类 根据守护进程的启动和管理方式,可以分为独立启动守护进程和超级守护进程两类 独立启动(stand_alone):该类进程启动后就常驻内存,所以会一直占用系统资源。其最大的优点就是它会一直启动,当外界有要求时相应速度较快,像httpd等进程; 超级守护进程:系统启动时由一个统一的守护进程xinet来负责管理一些进程,当相应请求到来时需要通过xinet的转接才可以唤醒被xinet管理的进程。这种进程的优点时最初只有xinet这一守护进程占有系统资源,其他的内部服务并不一直占有系统资源,只有数据包到来时才会被xinet管理员来唤醒

socket创建和结束

自作多情 提交于 2019-12-24 07:09:38
什么是进程 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是 操作系统 结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。 狭义定义:进程是正在运行的程序的实例(an instance of a computer program that is being executed)。 广义定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是 操作系统 动态执行的 基本单元 ,在传统的 操作系统 中,进程既是基本的 分配单元 ,也是基本的执行单元。 第一,进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stack region)。文本区域存储处理器执行的代码;数据区域存储变量和进程执行期间使用的动态分配的内存;堆栈区域存储着活动过程调用的指令和本地变量。 第二,进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时(操作系统执行之),它才能成为一个活动的实体,我们称其为进程。[3] 进程是操作系统中最基本、重要的概念。是多道程序系统出现后

理解 Linux 配置文件

∥☆過路亽.° 提交于 2019-12-24 03:17:49
原文 http://www.ibm.com/developerworks/cn/linux/management/configuration/ 本文说明了 Linux 系统的配置文件,在多用户、多任务环境中,配置文件控制用户权限、系统应用程序、守护进程、服务和其它管理任务。这些任务包括管理用户帐号、分配磁盘配 额、管理电子邮件和新闻组,以及配置内核参数。本文还根据 配置文件的 使用和其所影响的服务的情况对目前 Red Hat Linux 系统中的配置文件进行了分类。 介绍 每个 Linux 程序都是一个可执行文件,它含有操作码列表,CPU 将执行这些操作码来完成特定的操作。例如,ls 命令是由 /bin/ls 文件提供的,该文件含有机器指令的列表,在屏幕上显示当前目录中文件的列表时需要使用这些机器指令。 几乎每个程序的行为都可以通过修改其配置文件来按照您的偏好或需要去定制。 Linux 中有没有一个标准的配置文件格式? 一句话,没有。不熟悉 Linux 的用户(一定)会感到沮丧,因为每个配置文件看起来都象是一个要迎接的新挑战。在 Linux 中,每个程序员都可以自由选择他或她喜欢的配置文件格式。可以选择 的格式 很多,从 /etc/shells 文件(它包含被一个换行符分开的 shell 的列表),到 Apache 的复杂的 /etc/httpd.conf 文件。

linux日志守护进程 syslog

拈花ヽ惹草 提交于 2019-12-19 08:22:45
几乎所有的网络设备都可以通过syslog协议,将日志信息以UDP的形式传送给远端服务器,远端接收日志服务器必须通过syslogd监听UDP端口514,并根据 syslog.conf 配置文件张的配置处理。配置文件 /etc/rsyslog.conf 中规定了syslogd如何根据设备和信息的重要级别来报告信息。 CentOS6.5之前,配置文件为/etc/syslog.conf,从CentOS6.5之后,配置文件名变更为/etc/rsyslog.conf 。 syslog支持日志分类输出到特定文件中,但是有几个限制: 1、syslog日志输出支持分类,但不支持每个进程单独输出到某个文件(因为syslog并不是作为一套完整的日志库而产生的); 2、syslog输出的日志文件位置并不是任意的,默认仅仅限于【/var/log/】目录下,如果指定到其他位置,视为无效; 配置文件的格式: 【服务.优先级 <tab> action字段】。 其中,【服务.优先级】一起统称为选择条件。条件选择是对服务进行了分类,便于syslog对日志的输出管理。同时一行的配置中,允许出现多个选择条件,多个选择条件使用 ; 隔开。 服务(facility),用来指定syslog的功能,主要包括: 1 kern 内核信息,首先通过 klogd 传递; 2 user 用户进程; 3 mail 邮件; 4 daemon

守护进程

泄露秘密 提交于 2019-12-14 05:52:07
Linux操作系统包括三种不同类型的进程,每种进程都有自己的特点和属性。   1. 交互进程 是由一个Shell启动的进程。交互进程既可以在前台运行,也可以在后台运行。   2. 批处理进程 和终端没有联系,是一个进程序列。   3. 监控进程 (也称系统守护进程)是Linux系统启动时运行的进程,并常驻后台。例如,httpd是著名的Apache服务器的监控进程。 init是Linux系统操作中不可缺少的程序之一。所谓的 init进程 ,它是一个由内核启动的用户级进程。 内核自行启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式,完成引导进程。所以,init始终是第一个进程(其进程编号始终为1)。 其它所有进程都是init进程的子孙。init进程是不可杀的(即不能通过kill 命令杀掉进程)! 守护进程的创建: 1 创建子进程,父进程退出。 if(fork() > 0){ exit(0) }; 2 子进程变成孤儿进程,被init进程收养,子进程在后台运行。 3 子进程创建新会话。 if(setsid() < 0){ exit(-1) } 子进程成为新的会话组长,脱离原来的终端。 4 更改当前目录 chdir("/"); 或 chdir("/tmp"); 守护进程在后台运行,其工作目录不能被卸载需重新设定当前工作目录

PHP 实现守护进程(Daemon)

試著忘記壹切 提交于 2019-12-06 09:55:24
守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程是一种很有用的进程。php也可以实现守护进程的功能。 最近要开发一个 Agent,因为和 webserver 一起开发,所以 Agent也用PHP 开发。 功能需求: (1)需监听端口,接收控制器发来的任务消息; (2)根据任务消息,启动执行任务,并监控任务状态; (3)将任务运行结果反馈给控制器; 开始使用 workerman 框架,但是发现框架虽好,但也有很多限制。 1、基本概念 进程:每个进程都有一个父进程,子进程退出,父进程能得到子进程退出的状态。 进程组:每个进程都属于一个进程组,每个进程组都有一个进程组号,该号等于该进程组组长的PID 2、守护进程编程要点 1. 在后台运行。 为避免挂起控制终端将Daemon放入后台执行。方法是在进程中调用fork使父进程终止,让Daemon在子进程中后台执行。 if($pid=pcntl_fork()) exit(0);//是父进程,结束父进程,子进程继续 2. 脱离控制终端,登录会话和进程组 有必要先介绍一下Linux中的进程与控制终端,登录会话和进程组之间的关系:进程属于一个进程组,进程组号(GID)就是进程组长的进程号(PID)。登录会话可以包含多个进程组。这些进程组共享一个控制终端