首页
学习
活动
专区
圈层
工具
发布

守护进程(daemon)

创建子进程,终止父进程 这是因为守护进程是脱离终端控制的,所以要造成一种在终端里已经运行完的假象,把所有的工作都放在子进程中去完成。父进程退出后,子进程变成孤儿进程。...在子进程中创建新会话 这是因为即使子进程已经变成了孤儿进程,但是它始终是被父进程创建出来的,继承了父进程的会话、进程组、控制终端等等。...由于在进程运行过程中,当前目录所在的文件系统不能卸载,因此,把当前工作目录换成其他的路径,如“/”或“/tmp”等。...重设文件掩码 由于通过fork函数创建的子进程继承了父进程的文件掩码,这就给该子进程使用文件带来了诸多的麻烦。因此,把文件创建掩码设置为0,可以大大增强该守护进程的灵活性。...结果如下: 当我们不需要的守护进程的在后台继续执行的时候,可以通过kill -9 pid来杀死它。我们可以查看daemon.log文件的内容如下:

1.9K20

守护进程

创建子进程,终止父进程 这是因为守护进程是脱离终端控制的,所以要造成一种在终端里已经运行完的假象,把所有的工作都放在子进程中去完成。父进程退出后,子进程变成孤儿进程。...在子进程中创建新会话 这是因为即使子进程已经变成了孤儿进程,但是它始终是被父进程创建出来的,继承了父进程的会话、进程组、控制终端等等。...由于在进程运行过程中,当前目录所在的文件系统不能卸载,因此,把当前工作目录换成其他的路径,如“/”或“/tmp”等。...重设文件掩码 由于通过fork函数创建的子进程继承了父进程的文件掩码,这就给该子进程使用文件带来了诸多的麻烦。因此,把文件创建掩码设置为0,可以大大增强该守护进程的灵活性。...当我们不需要的守护进程的在后台继续执行的时候,可以通过kill -9 pid来杀死它。我们可以查看daemon.log文件的内容如下: ?

2.4K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    WEB平台DJANGO&VUE配置部署生产环境

    yum install uwsgi-plugin-python plugins = python (加在ini配置文件中) 配置 uwsgi可以使用命令行启动,也可以使用配置文件来启动,推荐使用配置文件来启动守护进程...该值如果太小会报错 具体参数含义可以到官方文档查找 然后使用命令启动uwsgi进程,其中uwsgi.ini为上面内容的配置文件 uwsgi -i uwsgi.ini 可以看下日志文件有没有报错,或者看下...一定要确保进程正常run起来才行 至此,DJANGO已经通过nginx+uwsgi可以访问了 三、配置访问vue 其实这里访问编译好的vue静态文件有很多方式,本文主要讲述通过nginx直接访问和通过django...当然要做到这样要确保以下配置的正确 找到DJANGO_DIR根目录下DJANGO_NAME同名文件夹下urls.py,使用通用视图创建最简单的模板控制器,增加一行路由 url(r'^$', TemplateView.as_view...redis、celery,都需要开启守护进程,其中celery自身还不支持守护进程。

    2.7K120

    Python实现守护进程

    os.setsid() # 注意了,这里是第2次fork,也就是子进程的子进程,我们把它叫为孙子进程 _pid = os.fork() if _pid:...会话组 登陆终端时,就会创造一个会话,多个进程组可以包含在一个会话中。而创建会话的进程,就是会话组长。 已经是会话组长的进程,不可以再调用setsid()方法创建会话。...因此,上面代码中,子进程可以调用setsid(),而父进程不能,因为它本身就是会话组长。...另外,sh(Bourne Shell)不支持会话机制,因为会话机制需要shell支持工作控制(Job Control)。 守护进程与后台进程 通过&符号,可以把命令放到后台执行。...3、守护进程改变了会话、进程组、工作目录和文件描述符,后台进程直接继承父进程(shell)的 换句话说:守护进程就是默默地奋斗打拼的有为青年,而后台进程是默默继承老爸资产的富二代。

    2.3K80

    守护进程「建议收藏」

    事实上每个终端设备都对应一个不同的设备文件, /dev/tty提供了一个通用的接口, 一个进程要访问它的控制终端既可以通过/dev/tty也可以通过该终端设备所对应的设备文件来访问. ttyname函数可以由文件描述符查出对应的文件名...所以, 组长进程标识: 其进程组ID其进程ID 可以使用kill -SIGKILL -进程组ID(负的)来将整个进程组内的进程全部杀死 组长进程可以创建一个进程组, 创建该进程组中的进程, 然后终止....组长进程不能成为新会话首进程,新会话首进程必定会成为组长进程。 setsid pid_t setsid(void); 创建一个会话,并以自己的ID设置进程组ID,同时也是新会话的ID。...守护进程的特点   后台服务程序   独立于终端控制   周期性执行某任务   不受用户登陆注销影响   一般采用以d结尾的名字(服务) 创建守护进程模型 fork子进程, 父进程退出, 所有工作在子进程中进行形式上脱离了控制终端...; 非必须 重设文件权限掩码, umask()函数, 防止继承的文件创建屏蔽字拒绝某些权限, 增加守护进程灵活性; 非必须 关闭文件描述符, 继承的打开文件不会用到, 浪费系统资源, 无法卸载, close

    81340

    守护进程(Daemon)

    守护进程的创建 Linix 中可以调用 int daemon(int nochdir, int noclose); 函数来使程序成为一个守护进程。...具体用法可以用“男人”命令(手册命令)查询:man daemon。 通过原理我们也可以手动创建一个守护进程。...此时它可能会再申请一个控制终端,所以我们再 fork 一下,并只保留新的子进程,这样就不是会话组长了,就不能申请控制终端了。 close(fd) 之后再关闭从父进程继承的文件描述符。...umask(0) 设置文件掩码是为了不受父进程的 umask 的影响,能自由创建读写文件和目录。...chdir("/") 守护进程一般是一直执行到系统关机,在它运行过程中,它所在的目录就不能卸载(unmounted)。通过将它的工作目录转移到根目录,用来的目录就允许卸载了。

    8.2K30

    网站功能——使用 Supervisor 部署 Django 应用程序

    具体的方案是加入 supervisor 来守护 gunicorn,也就是说使用 supervisor 来启动 gunicorn 进而运行 Django。...日志管理:Supervisor可以捕获和管理进程的输出日志,包括标准输出和标准错误。它提供了对日志文件的轻松访问和旋转,以便有效地跟踪和调试应用程序的运行情况。...配置灵活:Supervisor使用简单的配置文件来定义要监控和管理的进程。您可以为每个进程指定启动命令、工作目录、运行用户等信息,并通过配置文件灵活地定义进程之间的依赖关系。...pid 文件地址,然后是 file 参数和 serverurl 参数的地址应该报错一致,这两个文件会自动生成,所以要保证权限有。...创建服务配置 上面的主配置中 include 的目录中创建服务配置,比如django.conf,放到 /opt/cloud/izone/supervisord.d/ 目录里面就行。

    1.6K20

    Python守护进程daemon实现

    00:00:00 [ksoftirqd/0] 其中,[kthreadd]为内核进程,由它fork出来的子进程都是内核进程,并且内核守护进程的名字出现在方括号中,对于需要在进程上下文执行工作但却不被用户层进程...这些环境包括未关闭的文件描述符,控制终端,会话和进程组,工作目录以及文件创建屏蔽字等。这些环境通常是守护进程从执行它的父进程(特别是shell)中继承下来的。...1.2 守护进程的特性 1.在后台运行 2.与其运行前的环境隔离开来。这些环境包括未关闭的文件描述符、控制终端、会话和进程组、工作目录以及文件创建掩码等。...这是为了保证守护进程的当前工作目录在一个挂载的文件系统中,该文件系统不能被卸载。 5、关闭不再需要的文件描述符。根据具体情况来定。...6.重设文件创建掩码为0 7.处理SIGCHLD 信号 3 Python守护进程 3.1 函数实现 #!

    8.4K30

    Linux守护进程

    会话 创建会话的注意事项: 调用进程不能是进程组组长(父进程不能创建会话),该进程变成新会话首进程session header; 该进程成为一个新的进程组的组长进程,也就是说如果子进程创建了一个会话,那么子进程就脱离父进程的进程组...如何创建守护进程模型 ① 创建子进程,父进程退出 所有工作在子进程中进行,形式上脱离了控制终端。...④ 重设文件权限掩码 使用umask()函数重设文件掩码,即可以防止继承的文件创建屏蔽字来拒绝某些权限,也可以增加守护进程的灵活性。...⑥ 开始执行守护进程的核心工作 ⑦ 守护进程退出处理程序模型(非必要) 3..../a.out > file.log & 这样运行的程序就是一个守护进程,也可以达到上面那样创建守护进程的效果。

    99810

    linux守护进程

    接管; 2、有哪些常见的守护进程 日志服务进程 syslogd 数据库守护进程 mysqld 3、创建守护进程的步骤 1)fork()创建子进程,父进程exit()退出 这是创建守护进程的第一步。...之后的所有工作都在子进程中完成,而用户在Shell终端里则可以执行其他命令,从而在形式上做到了与控制终端的脱离,在后台工作。...4)在孙进程中调用 chdir() 函数,让根目录 ”/” 成为孙进程的工作目录 这一步也是必要的步骤,使用fork创建的子进程继承了父进程的当前工作目录。...因此,通常的做法是让"/"作为守护进程的当前工作目录,这样就可以避免上述的问题,当然,如有特殊需要,也可以把当前工作目录换成其他的路径,如/tmp,改变工作目录的常见函数是chdir。...由于使用fork函数新建的子进程继承了父进程的文件权限掩码,这就给该子进程使用文件带来了诸多的麻烦。因此,把文件权限掩码设置为0,可以大大增强该守护进程的灵活性。设置文件权限掩码的函数是umask。

    3.8K20

    教你写一个守护进程

    守护进程与终端无任何关联,用户的登录与注销与守护进程无关、不受其影响,守护进程自成进程组、自成会话,即pid=gid=sid。...子进程是继承了父进程的当前工作目录,由于在进程运行中,当前目录所在的文件系统是不能卸载的,这对以后使用会造成很多的麻烦。...因此通常的做法是让“/”作为守护进程的当前目录,当然也可以指定其 它目录来作为守护进程的工作目录。 重设文件权限掩码 umask。...因此,把文件权限掩 码设置为 0,确保子进程有最大操作权限、这样可以大大增强该守护进程的灵活性。设置文件权限掩码的函数是 umask,通常的使用方法为 umask(0)。 关闭不再需要的文件描述符。...pid; int i; /* 创建子进程 */ pid = fork(); if (0 > pid) { perror("fork error"); exit

    1.9K30

    运维人必收藏的最全Linux服务器程序规范

    后台程序又称守护进程。它没有控制终端,因而也不会意外接受用户输入。守护进程的父进程一般是init进程(pid=1)。...Linux服务器程序通常有一套日志系统,它至少能输出日志到文件,有的高级服务器可以输出日志到专门的UDP服务器。大部分后台进程都在/var/log下有自己的日志目录。...2.会话 (1)一些有关联的进程将组成一个会话, 下面的函数用于创建一个会话: 该函数不能由进程组的首领进程调用,否则将产生一个错误。...这三条命令创建了一个会话(SID是2962)和两个进程组(PGID:2962, 3102)bash命令的PID,PGID和SID都相同,显然它时会话的首领, 也就是组2962的首领。...所以可以利用早先打开的文件描述符来访问调用chroot之后不能直接访问的文件(目录). 06 服务器程序后台化 最后,如何在代码中让一个进程以守护进程的防止运行,守护进程的编写遵循一定的步骤,下面一个实例

    1.4K00

    Linux守护进程的编程实现

    其次,守护进程必须与其执行前的环境隔离开来。这些环境包含未关闭的文件描写叙述符,控制终端,会话和进程组,工作文件夹以及文件创建掩模等。...关闭打开的文件描写叙述符 进程从创建它的父进程那里继承了打开的文件描写叙述符。如不关闭,将会浪费系统资源,造成进程所在的文件系统无法卸下以及引起无法预料的错误。...按例如以下方法关闭它们: for(i=0;i 关闭打开的文件描写叙述符close(i);> 5. 改变当前工作文件夹 进程活动时,其工作文件夹所在的文件系统不能卸下。...一般须要将工作文件夹改变到根文件夹。对于须要转储核心,写执行日志的进程将工作文件夹改变到特定文件夹如/tmpchdir(“/”) 6....重设文件创建掩模 进程从创建它的父进程那里继承了文件创建掩模。它可能改动守护进程所创建的文件的存取位。为防止这一点,将文件创建掩模清除:umask(0); 7.

    3K20

    史上最全Linux服务器程序规范

    后台程序又称守护进程。它没有控制终端,因而也不会意外接受用户输入。守护进程的父进程一般是init进程(pid=1)。...Linux服务器程序通常有一套日志系统,它至少能输出日志到文件,有的高级服务器可以输出日志到专门的UDP服务器。大部分后台进程都在/var/log下有自己的日志目录。...2.会话 (1)一些有关联的进程将组成一个会话, 下面的函数用于创建一个会话: 该函数不能由进程组的首领进程调用,否则将产生一个错误。...这三条命令创建了一个会话(SID是2962)和两个进程组(PGID:2962, 3102)bash命令的PID,PGID和SID都相同,显然它时会话的首领, 也就是组2962的首领。...所以可以利用早先打开的文件描述符来访问调用chroot之后不能直接访问的文件(目录). 06 服务器程序后台化 最后,如何在代码中让一个进程以守护进程的防止运行,守护进程的编写遵循一定的步骤,下面一个实例

    2.1K60

    PHP 编写守护进程

    PHP 创建守护进程 进程根据状态可以分为三种进程,守护进程,僵尸进程,孤儿进程。今天我们着重来分析下守护进程。...之后所有的工作都在子进程中完成,而用户在 shell 终端里则可以执行其他的命令,从而使得程序以僵尸进程形式运行,在形式 I 上做到了与控制终端的脱离。...由于在进程运行过程中,当前目录所在的文件系统不能卸载,因此,把当前工作目录换成其他的路径,如 “/” 或 “/tmp” 等。改变工作目录的常见函数是 chdir。...重设文件创建掩码 文件创建掩码是指屏蔽掉文件创建时的对应位。由于使用 fork 函数新建的子进程继承了父进程的文件创建掩码,这就给该子进程使用文件带来了诸多的麻烦。...因此,把文件创建掩码设置为 0,可以大大增强该守护进程的灵活性。设置文件创建掩码的函数是 umask,通常的使用方法为 umask (0)。

    2.1K20

    进程组、会话、控制终端概念,如何创建守护进程?

    守护进程创建流程 守护进程创建流程如下: 1. 创建子进程,父进程退出 2. 在子进程中创建新会话 3. 改变当前目录为根目录 4. 重设文件权限掩码 5....读者可以回忆一下创建守护进程的第一步,在那里调用了fork()函数来创建子进程再令父进程退出。...因此,通常的做法是让“/”作为守护进程的当前工作目录,这样就可以避免上述问题。当然,如有特殊需要,也可以把当前工作目录换成其他的路径,如/tmp。改变工作目录的常见函数是chdir()。 4....由于使用fork()函数新建的子进程继承了父进程的文件权限掩码,这就给该子进程使用文件带来了诸多的麻烦。 因此,把文件权限掩码设置为0,可以大大增强该守护进程的灵活性。...,以下开始正式进入守护进程实际工作 * 注意:由于此时守护进程完全脱离了控制终端,因此,不能像其他普通进程 * 一样通过printf或者perror将错误信息输出到控制终端,一种通用的办 *

    2K20

    django 1.8 官方文档翻译: 6-6-2 如何使用WSGI 部署

    startproject 命令创建一个/wsgi.py 文件,它就包含这样一个application 可调用对象。...它既可用于Django 的开发服务器,也可以用于线上WSGI 的部署。 WSGI 服务器从它们的配置中获得application 可调用对象的路径。...Django 使用DJANGO_SETTINGS_MODULE 环境变量来定位settings 模块。它包含settings 模块的路径,以点分法表示。...这是runserver 如何找到默认的settings 文件的机制。 注 因为环境变量是进程范围的,当你在同一个进程中运行多个Django 站点时,它将不能工作。...为了避免这个问题,可以使用mod_wsgi 的守护进程模式,让每个站点位于它自己的守护进程中,或者在wsgi.py中通过强制使用os.environ["DJANGO_SETTINGS_MODULE"]

    67120

    在Python中用Celery安排管理后台工作流

    例如复杂的工作流执行(DAG工作流程),图形生成,类似于任务的Map-Reduce,以及媒体内容的服务(视频,音频)。 执行后台任务的一个简单的解决方案是在单独的线程或进程中运行它。...它专注于实时操作,但也支持调度。执行单元,称为任务,在一个或多个使用多处理、Eventlet或gevent的工作服务器上并发执行。任务可以异步执行(在后台)或同步执行(等待准备就绪)。...最后,当进程完成时,结果可以作为文件通过HTTP下载。 实现细节 首先,让我们将流程分解成最小的单位并创建管道: 1.Fetchers是负责从GitHub服务中获取存储库的workers 。...Celery为Python应用程序提供了强大的控制,可以控制它在内部的工作。它附有一个熟悉的信号框架。使用Celery的应用程序可以订阅其中的一些,以增强某些操作的行为。...两者都可以是系统的隔离组件,既不知道也不与其他组件直接通信。 什么是Celery for Python? 芹菜是Python世界中最受欢迎的后台工作经理之一。

    8.5K20
    领券