当前位置:首页 » 编程软件 » linux脚本守护进程

linux脚本守护进程

发布时间: 2022-05-10 08:49:13

linux下的守护进程的概念daemon.py是什么意思

守护进程一般是服务器类程序中用来无限循环等待事件发生的一个进程或线程,也就是说,它的作用是等待一个事件发生,事件发生后调用另外的进程区完成相应的工作,自己再回去等事件发生。
用ps aux查看进程的进程号,然后用kill杀掉
py是后缀名,意思是用python语言写的。
至于如何重启,这个没有统一的方法。你可以查看相关的文档,或者在google上搜索,或者man一下。。
守护进程一个或者多个都是可能的。

❷ 如何正确编写linux守护进程

1、守护进程,也就是通常说的Daemon进程,是Linux中的后台服务进程。它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。如果想让某个进程不因为用户或终端或其他地变化而受到影响,那么就必须把这个进程变成一个守护进程。
2、创建守护进程步骤
1)创建子进程,父进程退出
之后的所有工作都在子进程中完成,而用户在Shell终端里则可以执行其他命令,从而在形式上做到了与控制终端的脱离。
在Linux中父进程先于子进程退出会造成子进程成为孤儿进程,而每当系统发现一个孤儿进程时,就会自动由1号进程(init)收养它,这样,原先的子进程就会变成init进程的子进程。
2)在子进程中创建新会话
进程组:是一个或多个进程的集合。进程组有进程组ID来唯一标识。除了进程号(PID)之外,进程组ID也是一个进程的必备属性。每个进程组都有一个组长进程,其组长进程的进程号等于进程组ID。且该进程组ID不会因组长进程的退出而受到影响。
会话周期:会话期是一个或多个进程组的集合。通常,一个会话开始于用户登录,终止于用户退出,在此期间该用户运行的所有进程都属于这个会话期。
(1)pid_t setsid(void);
setsid() creates a new session if the calling process is not a process group leader. The calling process will be the only process in this new process group and in this new session.
setsid函数用于创建一个新的会话,并担任该会话组的组长。调用setsid有下面的3个作用:
① 让进程摆脱原会话的控制
② 让进程摆脱原进程组的控制
③ 让进程摆脱原控制终端的控制
有以下三个结果:
(a)成为新会话的首进程
(b)成为一个新进程组的组长进程
(c)没有控制终端。
有些人建议在此时再次调用fork,并使父进程终止。第二个子进程作为守护进程继续运行。这样就保证了该守护进程不是会话首进程。
setsid函数能够使进程完全独立出来,从而摆脱其他进程的控制。
setsid()调用成功后,进程成为新的会话组长和新的进程组长,并与原来的登录会话和进程组脱离。由于会话过程对控制终端的独占性,进程同时与控制终端脱离。 子进程可以自己组成一个新的进程组,即调用setpgrp()与原进程组脱离关系,产生一个新的进程组,进程组号与它的进程号相同.这样,父进程退出运行后就不会影响子进程的当前运行.
3)改变当前目录为根目录
使用fork创建的子进程继承了父进程的当前工作目录;进程活动时,其工作目录所在的文件系统不能卸下。通常的做法是让"/"作为守护进程的当前工作目录,也可以是其他目录,如/tmp,使用chdir。
4)重设文件权限掩码
文件权限掩码是指屏蔽掉文件权限中的对应位。比如,有个文件权限掩码是050,它就屏蔽了文件组拥有者的可读与可执行权限。mask = mask & ~050
通常,把文件权限掩码设置为0,umask(0)。
5)关闭文件描述符
用fork函数新建的子进程会从父进程那里继承已经打开了的文件描述符。这些被打开的文件可能永远不会被守护进程读写,但它们一样消耗系统资源,而且可能导致所在的文件系统无法卸下。
在上面的第二步之后,守护进程已经与所属的控制终端失去了联系。因此从终端输入的字符不可能达到守护进程,守护进程中用常规方法(如printf)输出的字符也不可能在终端上显示出来。所以,文件描述符为0、1和2 的3个文件(常说的输入、输出和报错)已经失去了存在的价值,也应被关闭。
for(i=0;i<MAXFILE;i++)
close(i);
6)守护进程退出处理
当用户需要外部停止守护进程运行时,往往会使用 kill命令停止该守护进程。所以,守护进程中需要编码来实现kill发出的signal信号处理,达到进程的正常退出。
signal(SIGTERM, sigterm_handler);
void sigterm_handler(int arg)
{
_running = 0;
}
7)处理SIGCHLD信号
处理SIGCHLD信号并不是必须的。但对于某些进程,特别是服务器进程往往在请求到来时生成子进程处理请求。如果父进程不等待子进程结束,子进程将成为僵尸进程(zombie)从而占用系统资源。如果父进程等待子进程结束,将增加父进程的负担,影响服务器进程的并发性能。在Linux下可以简单地将 SIGCHLD信号的操作设为SIG_IGN。
signal(SIGCHLD,SIG_IGN);
这样,内核在子进程结束时不会产生僵尸进程。

❸ Linux 下的守护进程是怎么保证它一直运行的

在Linux/UNIX系统引导的时候会开启很多服务,这些服务称为守护进程(也叫Daemon进程)。守护进程是脱离于控制终端并且在后台周期性地执行某种任务或等待处理某些事件的进程,脱离终端是为了避免进程在执行过程中的信息在任何终端上显示并且进程也不会被任何终端所产生的中断信息所终止。

❹ linux 进程守护程序怎么写

守护进程及其特性
(1)守护进程最重要的特性是后台运行。在这一点上DOS下的常驻内存程序TSR与之相似。
(2)其次,守护进程必须与其运行前的环境隔离开来。这些环境包括未关闭的文件描述符,控制终端,会话和进程组,工作目录以及文件创建掩模等。这些环境通常是守护进程从执行它的父进程(特别是shell)中继承下来的。
(3)最后,守护进程的启动方式有其特殊之处。它可以在Linux系统启动时从启动脚本/etc/rc.d中启动,可以由作业规划进程crond启动,还可以由用户终端(通常是 shell)执行。
总之,除开这些特殊性以外,守护进程与普通进程基本上没有什么区别。
因此,编写守护进程实际上是把一个普通进程按照上述的守护进程的特性改造成为守护进程。

❺ Linux下怎么查看某个守护进程或者所有的守护进程

查看守候进程的命令可以使用ps完成。

进程一般分为交互进程、批处理进程和守护进程(daemons)三类。值得一提的是守护进程总是活跃的,一般在后台运行,守护进程一般由系统在开机时通过脚本自动激活启动或由超级管理用户root来启动。比如在Fedora或Redhat中,我们可以定义httpd服务器的启动脚本的运行级别,此文件位于/etc/init.d目录下,文件名是httpd,/etc/init.d/httpd 就是httpd服务器的守护程序,当把它的运行级别设置为3和5时,当系统启动时,它会跟着启动。

[root@localhost~]#chkconfig--level35httpdon

由于守护进程是一直运行着的,所以它所处的状态是等待请求处理任务。例如通常大网站的Apache服务器都在运行,等待着用户来访问,也就是等待着任务处理。

Linux服务器在启动时需要启动很多系统服务,它们向本地和网络用户提供了Linux的系统功能接口,直接面向应用程序和用户。提供这些服务的程序是由运行在后台的守护进程来执行的。守护进程是生存期长的一种进程。它们独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。它们常常在系统引导装入时启动,在系统关闭时终止。Linux系统有很多守护进程,大多数服务器都是用守护进程实现的。同时,守护进程完成许多系统任务,比如,作业规划进程crond、打印进程lqd等。有些书籍和资料也把守护进程称为"服务"。选择运行哪些守护进程,要根据具体需求决定。查看系统可以提供的守护进程对应的服务,打开一个终端以root权限运行ntsysv命令。

❻ 关于守护进程和启动程序脚本的求教,谢谢!

1、守护进程就是用来在执行不需要人干预的任务的。一般Linux需要在/etc/init.d/也可能是/etc/rc.d/init.d/下放启动脚本,然后在/etc/rcX.d/也可能是/etc/rc.d/rcX.d里做之前放在init.d里的脚本软连接,X是启动级别。2、首先你写的程序应该是一个在没有接收到结束信号时应该是无限循环,不会自动结束。至于脚本,其实你直接在/etc/rc.local里加上一句 /path/to/youapp &就可以开机自动启动了。

热点内容
保时捷卡宴哪个配置比较好 发布:2025-05-13 19:00:08 浏览:724
c语言负数运算 发布:2025-05-13 18:45:21 浏览:428
太空杀电脑版连接不到服务器 发布:2025-05-13 18:40:19 浏览:457
同样的配置为什么跑分不同 发布:2025-05-13 18:39:06 浏览:278
获取linuxcpu序列号 发布:2025-05-13 18:36:35 浏览:738
appleid为什么连接服务器出现问题 发布:2025-05-13 18:17:37 浏览:971
书翁怎么配置 发布:2025-05-13 18:17:36 浏览:911
云数据库mongodb 发布:2025-05-13 18:16:12 浏览:774
A7编程 发布:2025-05-13 18:15:26 浏览:742
python视图 发布:2025-05-13 18:14:01 浏览:759