linux守护进程

守护进程

烈酒焚心 提交于 2020-03-03 10:05:52
在linux或者unix操作系统中在系统引导的时候会开启很多服务,这些服务就叫做守护进程。为了增加灵活性,root可以选择系统开启的模式,这些模式叫做运行级别,每一种运行级别以一定的方式配置系统。 守护进程是脱离于终端并且在后台运行的进程。守护进程脱离于终端是为了避免进程在执行过程中的信息在任何终端上显示并且进程也不会被任何终端所产生的终端信息所打断。 Linux守护进程列表 /守护进程 amd:自动安装NFS(网络文件系统)守侯进程 apmd:高级电源治理 Arpwatch:记录日志并构建一个在LAN接口上看到的以太网地址和ip地址对数据库 Autofs:自动安装治理进程automount,与NFS相关,依靠于NIS Bootparamd:引导参数服务器,为LAN上的无盘工作站提供引导所需的相关信息 crond:linux下的计划任务 Dhcpd:启动一个DHCP(动态IP地址分配)服务器 Gated:网关路由守候进程,使用动态的OSPF路由选择协议 Httpd:WEB服务器 Inetd:支持多种网络服务的核心守候程序 Innd:Usenet新闻服务器 Linuxconf:答应使用本地WEB服务器作为用户接口来配置机器 Lpd:打印服务器 Mars-nwe:mars-nwe文件和用于Novell的打印服务器 Mcserv:Midnight命令文件服务器 named:DNS服务器

Linux守护进程列表

拟墨画扇 提交于 2020-03-03 10:05:17
在linux或者unix操作系统中在系统的引导的时候会开启很多服务,这些服务就叫做守护进程。为了增加灵活性,root可以选择系统开启的模式,这些模式叫做运行级别,每一种运行级别以一定的方式配置系统。 守护进程是脱离于终端并且在后台运行的进程。守护进程脱离于终端是为了避免进程在执行过程中的信息在任何终端上显示并且进程也不会被任何终端所产生的终端信息所打断。 守护进程,也就是通常说的Daemon 进程 ,是 Linux 中的 后台 服务进程。它是一个生存期较长的进程,通常独立于控制 终端 并且周期性地执行某种任务或等待处理某些发生的事件。Linux的守护进程包括: amd:自动安装NFS( 网络文件系统 )守侯进程 apmd:高级电源治理 Arpwatch:记录日志并构建一个在LAN接口上看到的以太网地址和ip地址对数据库 Autofs:自动安装治理进程automount,与NFS相关,依靠于NIS Bootparamd:引导参数服务器,为LAN上的 无盘工作站 提供引导所需的相关信息 crond:linux下的计划任务 Dhcpd:启动一个DHCP(动态IP地址分配)服务器 Gated: 网关 路由守候进程,使用动态的OSPF 路由选择协议 Httpd:WEB服务器 Inetd:支持多种 网络服务 的核心守候程序 Innd:Usenet新闻服务器 Linuxconf

linux系统的进程组和守护进程

|▌冷眼眸甩不掉的悲伤 提交于 2020-02-17 16:12:43
进程组 概念和特性 进程组,也称之为作业。BSD于 1980 年前后向Unix中增加的一个新特性。代表一个或多个进程的集合。每个进程都属于一个进程组。在waitpid函数和kill函数的参数中都曾使用到。操作系统设计的进程组的概念,是为了简化对多个进程的管理。 当父进程,创建子进程的时候,默认子进程与父进程属于同一进程组。进程组ID == 第一个进程 ID ( 组长进程 ) 。所以,组长进程标识:其进程组ID == 其进程ID 可以使用kill - SIGKILL - 进程组 ID ( 负的 ) 来将整个进程组内的进程全部杀死。 【kill_multprocess . c】 组长进程可以创建一个进程组,创建该进程组中的进程,然后终止。只要进程组中有一个进程存在,进程组就存在,与组长进程是否终止无关。 进程组生存期:进程组创建到最后一个进程离开 ( 终止或转移到另一个进程组 ) 。 一个进程可以为自己或子进程设置进程组ID 进程组操作函数 getpgrp函数 获取当前进程的进程组ID pid_t getpgrp ( void ) ; 总是返回调用者的进程组ID getpgid函数 获取指定进程的进程组ID pid_t getpgid ( pid_t pid ) ; 成功: 0 ;失败: - 1 ,设置errno 如果pid = 0 ,那么该函数作用和getpgrp一样。 #

inittab详解

倾然丶 夕夏残阳落幕 提交于 2020-02-14 11:16:04
转自:http://blog.chinaunix.net/space.php?uid=774458&do=blog&id=2044897 第二部分:运行init init的进程号是1,从这一点就能看出,init进程是系统所有进程的起点,Linux在完成核内引导以后,就开始运行init程序,。 init程序需 要读取配置文件/etc/inittab。inittab是一个不可执行的文本文件,它有若干行指令所组成。在Redhat系统中,inittab的内容 如下所示(以“###"开始的中注释为笔者增加的):      #   # inittab    This file describes how the INIT process should set up   #        the system in a certain run-level.   #   # Author:    Miquel van Smoorenburg,   #        Modified for RHS Linux by Marc Ewing and Donnie Barnes   #      # Default runlevel. The runlevels used by RHS are:   #  0 - halt (Do NOT set initdefault to this)   #  1

linux 基础入门(9) 系统服务 systemctl 与 xinted的运用

半城伤御伤魂 提交于 2020-02-11 00:51:42
9.系统服务 9.1系统服务 可以把计算机理解为一个地点比如中关村大街系统服务理解为中关村大街的理发店、饭店、商场等等,每一个都是一个系统服务,为客户提供不同内容的服务 服务:常驻在内存中的程序,且可以提供一些系统或网络功能,那就是服务。 计算机中的系统服务有很多,比如 apache提供web服务 ftp提供文件下载上传服务 ssh提供了远程连接服务 防火墙提供了安全防护服务等等 9.2守护进程 Linux服务器的主要任务就是为本地或远程用户提供各种服务。通常 Linux系统上提供服务的程序是由运行在后台的守护进程( Daemon)来执行。一个实际运行中的 Linux系统一般会有多个这样的程序在运行。这些后台守护进程在系统开机后就运行了,并且在时刻地监听前台客户地服务请求,一旦客户发出了服务请求,守护进程便为它们提供服务。 9.3特殊守护进程 系统初始化进程是一个特殊的的守护进程,其PD为1,它是所有其他守护进程的父进程或者祖先进程。也就是说,系统上所有的守护进程都是由系统初始化进程进行管理的(如启动、停止等)。 系统上所有的守护进程都是由系统初始化进程进行管理的(如启动、停止等) systemV(红帽7之前) ini按照优先级的高低,先后唤醒其他服务 服务有依赖关系 多命令协同工作管理服务 命令包括 init service chkconfig systemd 并行启动,速度更快

Linux部署.NetCore站点 使用Supervisor进行托管部署

六眼飞鱼酱① 提交于 2020-02-08 01:18:44
前言 之前终于在Linux上部署好了.NetCore站点,但是这个站点非常“脆弱”。当我的ssh连接关闭或者我想在当前连接执行其他命令时候就必须关闭dotnet站点的执行程序。这显然不是我想要达到的效果,还好知道有所谓的守护进程这个东西,大多数人都是推荐采取Supervisor来进行Linux上的应用进程管理,这里就开始使用它来对我们的.NetCore应用进程进行托管吧。 Linux的守护进程 我对于Linux的守护进程的理解是在Linux操作系统上通过守护进程的配置对需要进行守护的应用进行有效管理,如开机自启动、进程崩溃后自动重启等等。总之把它当成一个应用管家,在这个管家里我们要做好配置,以及可以手动对进程进行启动、停止等等操作。 这里假设已经将.NetCore应用部署到了Linux,存放的目录为 /root/netcore 应用名称为LinuxWebAppSample1 在站点存放的目录输入pwd可以获取到当前目录: 至于安装sdk、运行时什么的就不说了,部署站点那篇博客已经将详细的顺序和命令都写出来。现在就是万事俱备,只差我们的守护进程管理软件 Supervisor 安装Supervisor 输入下面命令安装Supervisor yum install supervisor 输入下面命令查看是否安装成功 supervisord --version

linux 一个简单守护进程实例

寵の児 提交于 2020-02-05 16:54:17
/*守护进程实例子*/ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <fcntl.h> #include <sys/types.h> #include <unistd.h> #include <sys/wait.h> #define MAXFILE 65535 int main() { pid_t pc; int i,fd,len; char *buf="this is a dameon \n"; len = strlen(buf); pc =fork(); //创建一个进程用来做守护进程 if(pc<0) { printf("error fork \n"); exit(1); } else if(pc>0) exit(0); //结束父进程 setsid(); //使子进程独立1.摆脱原会话控制 2.摆脱原进程组的控制 3.摆脱控制中端的控制 chdir("/"); //改变当前工作目录,这也是为了摆脱父进程的影响 umask(0); //重设文件权限掩码 for(i=0;i<MAXFILE;i++) //关闭文件描述符(常说的输入,输出,报错3个文件), //因为守护进程要失去了对所属的控制终端的联系,这三个文件要关闭 close(i); while(1) { if((fd=open("

守护进程

风流意气都作罢 提交于 2020-01-12 14:50:51
目录 5.1 概念 5.2 模型 5.1 概念 (1)什么是守护进程 Daemon(守护进程)是运行在后台的一种特殊进程。**它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。**它不需要用户输入就能运行而且提供某种服务,不是对整个系统就是对某个用户程序提供服务。Linux系统的大多数服务器就是通过守护进程实现的。 (2)为什么需要守护进程 守护进程是脱离于终端并且在后台运行的进程。守护进程脱离于终端是为了避免进程在执行过程中的信息在任何终端上显示并且进程也不会被任何终端所产生的终端信息所打断。 (3)守护进程实例 常见的守护进程包括系统日志进程syslogd、 web服务器httpd、邮件服务器sendmail和数据库服务器mysqld等。 5.2 模型 (1)守护进程编程步骤 a.创建子进程,父进程退出,一切工作在子进程中执行,形式上脱离了控制终端 b.在子进程中创建新的会话(会话后面章节会提到),使子进程完全独立出来,脱离控制 c.改变当前目录为根目录,防止占用其他可卸载的文件系统 d.重设文件权限掩码,防止继承的文件创建屏蔽字拒绝某些权限,增加守护进程的灵活性 e.关闭文件描述符 f.守护进程退出处理 代码模型: # include <unistd.h> # include <signal.h> # include <stdlib.h> # include

守护进程 ppid 1 https://unix.stackexchange.com/questions/240646/why-we-use-setsid-while-daemonizing-a-process nohup 修改ppid 为1

此生再无相见时 提交于 2020-01-11 18:38:04
守护进程 ppid 1 https://unix.stackexchange.com/questions/240646/why-we-use-setsid-while-daemonizing-a-process nohup 修改ppid 为1 https://pubs.opengroup.org/onlinepubs/7908799/xsh/setsid.html https://github.com/karelzak/util-linux/blob/master/sys-utils/setsid.c https://unix.stackexchange.com/questions/316186/how-does-nohup-work The act of using nohup simply changes the PPID of the spawned process to 1 (init) so that when the shell exits, it is no longer a child process of that shell and so therefor doesn't receive a HUP. EDIT: Should think more before I post sometimes. Leaving it here to remind me of

[Linux系统] 编写一个守护进程

懵懂的女人 提交于 2020-01-07 20:53:57
daemon.c文件: // daemon.c #include<stdio.h> #include<signal.h> #include<sys/param.h> #include<sys/types.h> #include<sys/stat.h> #include<stdlib.h> int init_daemon(void) { pid_t pid; int i; pid = fork(); if(pid > 0){ //第一步,结束父进程,使得子进程成为后台 exit(0); }else if(pid < 0){ return -1; } /*第二步建立一个新的进程组,在这个新的进程组中,子进程成为这个进程组的首进程,以使该进程脱离所用终端*/ setsid(); /*再次新建一个子进程,退出父进程,保证该进程不是进程组长,同时让该进程无法再打开一个新的终端*/ pid = fork(); if(pid > 0){ exit(0); }else if(pid < 0){ return -1; } //第三步:关闭所用从父进程继承的不再需要的文件描述符 for(i = 0;i < NOFILE;close(i++)); //第四步:改变工作目录,使得进程不与任何文件系统联系 chdir("/"); //第五步:将文件屏蔽字设置为0 umask(0); //第六步