linux守护进程

python之路——进程

流过昼夜 提交于 2019-11-29 21:33:31
阅读目录 理论知识 操作系统背景知识 什么是进程 进程调度 进程的并发与并行 同步\异步\阻塞\非阻塞 进程的创建与结束 在python程序中的进程操作 multiprocess模块 进程的创建和multiprocess.Process 进程同步控制 —— 锁 进程间通信 —— 队列 进程间的数据共享 —— multiprocess.Manager 进程池和multiprocess.Pool 回到顶部 理论知识 操作系统背景知识 回到顶部 顾名思义,进程即正在执行的一个过程。进程是对正在运行程序的一个抽象。 进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一。操作系统的其他所有内容都是围绕进程的概念展开的。 所以想要真正了解进程,必须事先了解操作系统, 点击进入 PS:即使可以利用的cpu只有一个(早期的计算机确实如此),也能保证支持(伪)并发的能力。将一个单独的cpu变成多个虚拟的cpu(多道技术:时间多路复用和空间多路复用+硬件上支持隔离),没有进程的抽象,现代计算机将不复存在。 必备的理论基础: #一 操作系统的作用: 1:隐藏丑陋复杂的硬件接口,提供良好的抽象接口 2:管理、调度进程,并且将多个进程对硬件的竞争变得有序 #二 多道技术: 1.产生背景:针对单核,实现并发 ps: 现在的主机一般是多核,那么每个核都会利用多道技术

并发编程一

妖精的绣舞 提交于 2019-11-29 10:08:05
并发编程 进程的并行和并发 并行: 并行是指两者同时执行, 比如赛跑, 两个人都在不停的往前跑:(资源够用, 比如三个线程, 四核的CPU) 并发: 并发是指资源有限的情况下, 两者交替轮流使用资源, 比如一段路(单核CPU资源)同时只能过一个人,A走一段, 让给B, B用完继续给A, 交替使用, 目的是提高效率. 并行和并发的区别 并行是从微观上, 也就是在一个精确的时间片刻, 有不同的程序在执行,这就是要求必须有多个处理器. 并发是从宏观上, 在一个时间段上可以看出是同时执行的,比如一个服务器同时处理多个任务 同步异步阻塞非阻塞 状态介绍 在了解其他概念之前,我们首先要了解进程的几个状态。在程序运行的过程中,由于被操作系统的调度算法控制,程序会进入几个状态:就绪,运行和阻塞。 就绪(Ready)状态:当进程已分配到除CPU以外的所有必要的资源,只要获得处理机便可立即执行,这时的进程状态称为就绪状态。 执行/运行(Running)状态当进程已获得处理机,其程序正在处理机上执行,此时的进程状态称为执行状态。 阻塞(Blocked)状态正在执行的进程,由于等待某个事件发生而无法执行时,便放弃处理机而处于阻塞状态。引起进程阻塞的事件可有多种,例如,等待I/O完成、申请缓冲区不能满足、等待信件(信号)等。 同步和异步 所谓同步就是一个任务的完成需要依赖另外一个任务时

linux端口查询

天大地大妈咪最大 提交于 2019-11-29 05:50:38
常用端口 下面的表格中列举了包括在红帽企业 Linux 中的服务、守护进程、和程序所使用的最常见的通信端口。该列表还可以在 /etc/services 文件中找到。要查看由互联网号码分派局(IANA)制定的“著名的已注册动态端口”官方列表,请参考以下 URL: 端口号码 / 层 名称 注释 1 tcpmux TCP 端口服务多路复用 5 rje 远程作业入口 7 echo Echo 服务 9 discard 用于连接测试的空服务 11 systat 用于列举连接了的端口的系统状态 13 daytime 给请求主机发送日期和时间 17 qotd 给连接了的主机发送每日格言 18 msp 消息发送协议 19 chargen 字符生成服务;发送无止境的字符流 20 ftp-data FTP 数据端口 21 ftp 文件传输协议(FTP)端口;有时被文件服务协议(FSP)使用 22 ssh 安全 Shell(SSH)服务 23 telnet Telnet 服务 25 smtp 简单邮件传输协议(SMTP) 37 time 时间协议 39 rlp 资源定位协议 42 nameserver 互联网名称服务 43 nicname WHOIS 目录服务 49 tacacs 用于基于 TCP/IP 验证和访问的终端访问控制器访问控制系统 50 re-mail-ck 远程邮件检查协议 53

Linux架构--------Rsync守护进程推和拉

我们两清 提交于 2019-11-29 04:37:54
33.1)Rsync基本概述 rsync是一款开源、快速、多功能、可实现 全量及增量 的本地或 远程数据同步 备份的优秀工具。rsync软件适用于Unix/linux/Windows等多种操作系统平台。 33.1.1)Rsync简介 rsync英文称为remote synchronizetion,从软件的名称就可以看出来,rsync具有可使本地和远程两台主机之间的数据快速复制同步镜像、远程备份的功能,这个功能 类似于 ssh 带的scp 命令,但是又优于scp 命令的功能,scp 每次都是全量拷贝,而rsync 可以增量拷贝 。当然,rsync还可以在本地主机的不同分区或目录之间全量及曾量的复制数据,这又类似cp命令。但是同样也优于cp命令,cp每次都是全量拷贝,而rsync可以增量拷贝。 在同步数据的时候,默认情况下,rsync通过其独特的“quick check”算法,它仅同步大小或者最后修改时间发生变化的文件或目录,当然也可根据权限、属主等属性的变化同步,但是需要制定相应的参数,甚至可以实现只同步一个文件里有变化的内容部分,所以,可是实现快速的同步备份数据。 rsync监听端口:873 rsync运行模式:C/S client/server 客户端/服务端 小提示:利用rsync还可以实现删除文件和目录的功能,这又相当于rm命令,一个rsync相当于scp、cp、rm

Supervisor 为服务创建守护进程

时光总嘲笑我的痴心妄想 提交于 2019-11-29 00:33:03
  今天需要再服务上部署一个.net 方面的项目;当时开启服务的命令只能在前台执行;使用nohub CMD &等放在后台开启服务都会宕机;所以搜寻了Supervisor 这个解决办法,为服务创建守护进程。具体操作如下 1、什么是守护进程   在linux或者unix操作系统中,守护进程(Daemon)是一种运行在后台的特殊进程,它独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件。由于在linux中,每个系统与用户进行交流的界面称为终端,每一个从此终端开始运行的进程都会依附于这个终端,这个终端被称为这些进程的控制终端,当控制终端被关闭的时候,相应的进程都会自动关闭。但是守护进程却能突破这种限制,它脱离于终端并且在后台运行,并且它脱离终端的目的是为了避免进程在运行的过程中的信息在任何终端中显示并且进程也不会被任何终端所产生的终端信息所打断。它从被执行的时候开始运转,直到整个系统关闭才退出。 本篇的创建守护进程,是指发布在Linux上 asp.net core 程序的dotnet xxx.dll命令的宿主进程创建一个守护进程。 在 Linux 上有很多可以管理进程的工具,我们使用 Supervisor 来做这个事情。原因有两点: 1、它是微软官方文档推荐的,降低学习成本。 2、它并不一定是最好的,但一定是文档最全的。 2、认识 Supervisor 2.1

进程

試著忘記壹切 提交于 2019-11-28 21:54:47
进程环境 文章目录 进程环境 1 进程环境 1.1 main函数 1.2 进程终止 1.3 命令行参数 1.4 环境表 1.5 环境变量 2 进程概述 2.1 进程定义 2.2 进程标识 2.3 进程运行状态 2.4 进程结构 2.5 进程模型 2.6 进程管理 3 进程控制 3.1 fork函数 3.2 exec函数族 3.3 exit和_exit函数 3.4 wait和waitpid函数 4 守护进程 4.1 概述 4.2 编写守护进程 4.3 守护进程的出错处理 4.3 守护进程的出错处理 1 进程环境 1.1 main函数 C程序总是从main函数开始执行,其原型为: int main(int argc, char *argv[]); 其中,argc是命令行参数的数目,argv是指向参数的各个指针构成的数组。 1.2 进程终止 有8种方式使进程终止,其中5种为正常终止: (1)从main函数返回。 (2)调用exit。 (3)调用_exit或_Exit。 (4)最后一个线程从其启动例程返回。 (5)最后一个线程调用pthread_exit。 3种异常终止: (1)调用abort。 (2)接到一个信号并终止。 (3)最后一个线程对取消请求做出响应。 atexit函数 # include <stdlib.h> int atexit ( void ( * func ) (

python - 进程

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

Linux系统进程管理

[亡魂溺海] 提交于 2019-11-27 11:10:56
一.进程基础知识 1.1 Linux进程的概念 Process :是运行中的程序的一个副本,是被载入内存的一个指令集合。进程 ID ( Process ID , PID )号码被用来标记各个进程 UID 、 GID 、和 SELinux 语境决定对文件系统的 存取和访问权限 ,这些属性通常从执行进程的用户来 继承 ,并且进程存在 生命周期 ,每个进程的进程号是 唯一 的 centos linux 的第一个进程通常是 init 或者 systemd ,它是所有进程的父进程, PID 为1,是唯一一个由系统内核直接运行的进程 Linux 给每个进程都打上了运行者的标志, 用户可以控制自己的进程 :给自己的进程分配不同的 优先级 ,也可以随时 终止 自己的进程 Linux 不可能在一个 CPU 上同时处理多个任务(作业)请求,而是 采用 “分时” 技术 来处理这些任务请求 除了init或者systemd, 其他进程 都是由父进程创建,即每个进程都有 父进程 (PPID) 1.2 进程类型 交互进程 由一个Shell启动的进程。 交互进程既可以在前台运行,也可以在后台运行。 批处理进程 不与特定的终端相关联,提交到等待队列种顺序执行的进程。 守护进程(Daemon) 在Linux在启动时初始化,需要时运行于后台的进程。 1.3 进程状态 R (TASK_RUNNING) :可执行状态 S

守护进程

五迷三道 提交于 2019-11-27 05:36:11
守护进程 Daemon(精灵)进程,是Linux中的后台服务进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。一般采用以d结尾的名字。 Linux后台的一些系统服务进程,没有控制终端,不能直接和用户交互。不受用户登录、注销的影响,一直在运行着,他们都是守护进程。如:预读入缓输出机制的实现;ftp服务器;nfs服务器等。 创建守护进程,最关键的一步是调用setsid函数创建一个新的Session,并成为Session Leader。 创建守护进程模型 创建子进程,父进程退出 所有工作在子进程中进行形式上脱离了控制终端 在子进程中创建新会话    setsid()函数    使子进程完全独立出来,脱离控制 改变当前目录为根目录    chdir()函数    防止占用可卸载的文件系统    也可以换成其它路径 重设文件权限掩码    umask()函数    防止继承的文件创建屏蔽字拒绝某些权限    增加守护进程灵活性 关闭文件描述符    继承的打开文件不会用到,浪费系统资源,无法卸载 开始执行守护进程核心工作 守护进程退出处理程序模型 【mydaemond.c】 /*** mydaemond.c ***/ #include<stdio.h> #include<stdlib.h> #include<unistd.h> #include<fcntl.h>

Linux应用开发之守护进程

做~自己de王妃 提交于 2019-11-27 05:10:13
守护进程是Linux中的后台服务进程,生存期较长的进程,通常独立于控制终 端并且周期性地执行某种任务或等待处理某些发生的事件。 创建守护进程的步骤如下: 1、在子进程中进行,父进程退出 2、把当前进程设为进程组组长 3、改变工作目录 4、改变umask掩码 5、关闭父进程的文件描述符 通过一个例子来看一下如何把这个步骤变成代码的形式。 //通过一直不停的向daemon.log文件里面不停的写数据 #include<stdio.h> #include<unistd.h> #include<sys/stat.h> #include<fcntl.h> #include<sys/types.h> //创建守护进程 void daemon_me() { pid_t pid; int i; pid = fork(); if(pid != 0)//子进程或则错误都退出 { _exit(1); } else if(pid == 0) { setsid();//把当前进程设为组长 chdir("/"); umask(0); for(i=0;i<3;i++) close(i); } } int main() { int fd; int i=0; char buf[1000]; fd = open("daemon.log" , O_CREAT|O_RDWR,0777); if(fd < 0) {