Linux下怎么检视某个守护程序或者所有的守护程序?

Linux下怎么检视某个守护程序或者所有的守护程序?,第1张

Linux下怎么检视某个守护程序或者所有的守护程序? 检视守候程序的命令可以使用ps完成。

程序一般分为互动程序、批处理程序和守护程序(daemons)三类。值得一提的是守护程序总是活跃的,一般在后台执行,守护程序一般由系统在开机时通过指令码自动启用启动或由超级管理使用者root来启动。比如在Fedora或Redhat中,我们可以定义d伺服器的启动指令码的执行级别,此档案位于/etc/init.d目录下,档名是d,/etc/init.d/d 就是d伺服器的守护程式,当把它的执行级别设定为3和5时,当系统启动时,它会跟着启动。

[root@localhost ~]# chkconfig --level 35 d on

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

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

什么是守护程序守护程序

守护程序(daemon)是指在UNIX或其他多工作业系统中在后台执行的电脑程式,并不会接受电脑使用者的直接 *** 控。此类程式会被以程序的形式初始化。守护程序程式的名称通常以字母“d”结尾:例如,syslogd就是指管理系统日志的守护程序。

通常,守护程序没有任何存在的父程序(即PPID=1),且在UNIX系统程序层级中直接位于init之下。守护程序程式通常通过如下方法使自己成为守护程序:对一个子程序呼叫fork,然后使其父程序立即终止,使得这个子程序能在init下执行。这种方法通常被称为“脱壳”。

系统通常在启动时一同起动守护程序。守护程序为对网路请求,硬体活动等进行响应,或其他通过某些任务对其他应用程式的请求进行回应提供支援。守护程序也能够对硬体进行配置(如在某些Linux系统上的devfsd),执行计划任务(例如cron),以及执行其他任务。

在DOS环境中,此类应用程式被称为驻留程式(TSR)。在Windows系统中,由称为Windows服务的应用程式来履行守护程序的职责。

在原本的Mac OS系统中,此类应用程式被称为“extensions”。而作为Unix-like的 Mac OS X有守护程序。(在Mac OS X中也有“服务”,但他们与Windows中类似的程式在概念上完全不相同。)

守护程序概念,以及怎么建立守护程序

这个不是一、二句话能够说得清楚的。你必须要通过学习 UNIX 作业系统这门课程,你才能够明白程序的概念、以及程序的多种状态之间的排程、还有不同程序之间的 P、V *** 作等。简单说:建立一个程序用 C 语言语句实现就是:fork() 。

linux守护程序问题

sleep可以睡眠

怎么检视守护程序的状态, 怎么检视一个程序是否是守护程序

检视守候程序的命令可以使用ps完成。

程序一般分为互动程序、批处理程序和守护程序(daemons)三类。值得一提的是守护程序总是活跃的,一般在后台执行,守护程序一般由系统在开机时通过指令码自动启用启动或由超级管理使用者root来启动。比如在Fedora或Redhat中,我们可以定义d伺服器的启动指令码的执行级别,此档案位于/etc/init.d目录下,档名是d,/etc/init.d/d 就是d伺服器的守护程式,当把它的执行级别设定为3和5时,当系统启动时,它会跟着启动。

1

[root@localhost ~]# chkconfig --level 35 d on

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

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

linux c 守护程序如何让程序停留

是指建立守护程序么?

Debian下有个start-s-daemon(dpkg),可以把一个前台程式执行为守护程序。

程式设计实现,可以用daemon呼叫,这个用起来简单,main函式下呼叫一次就可以了,别的都不用动(会重定向0,1,2,别等程式输出了)。也可以自己fork一个子程序,然后用setsid给子程序建立一个新会话,再关闭原程序,这时程式输出没有重定向。

linux中守护程序的父程序是什么程序

init是所有程式的父程序 也就是根程序

linux 怎么证明该程序是php的守护程序

程序A监控程序B,发现程序B异常退出的时候就自动重启程序B。 程序A就称为程序B的守护程序。

VB守护程序程式码

1.名称为:csrss.exe

Option Explicit

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Private Declare Function CreateToolhelpSnapshot Lib "kernel32" Alias "CreateToolhelp32Snapshot" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long

Private Declare Function ProcessFirst Lib "kernel32" Alias "Process32First" (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long

Private Declare Function Module32First Lib "kernel32" (ByVal hSnapshot As Long, lppe As MODULEENTRY32) As Long

Private Declare Function Module32Next Lib "kernel32" (ByVal hSnapshot As Long, lppe As MODULEENTRY32) As Long

Private Declare Function ProcessNext Lib "kernel32" Alias "Process32Next" (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long

Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

Private Type PROCESSENTRY32

dwSize As Long

tUsage As Long

th32ProcessID As Long

th32DefaultHeapID As Long

th32ModuleID As Long

tThreads As Long

th32ParentProcessID As Long

pcPriClassBase As Long

dwFlags As Long

szExeFile As String * 260

End Type

Const TH32CS_SNAPPROCESS = &H2

Const TH32CS_SNAPmodule = &H8

Private Type MODULEENTRY32

dwSize As Long

th32ModuleID As Long

th32ProcessID As Long

GlbltUsage As Long

ProctUsage As Long

modBaseAddr As Byte

modBaseSize As Long

hModule As Long

szModule As String * 256

szExePath As String * 1024

End Type

Private Sub Command1_Click()

End

End Sub

Private Sub Timer1_Timer()

Dim ret As Long, lPid As Long

Dim isLive As Boolean

Dim Mode As MODULEENTRY32, Proc As PROCESSENTRY32

Dim hSnapshot As Long, hMSnapshot As Long

Dim sFilename As String

sFilename = App.Path + "\ *** ss.exe" '另一个程序的路径

hSnapshot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0)

Proc.dwSize = Len(Proc)

Mode.dwSize = Len(Mode)

lPid = ProcessFirst(hSnapshot, Proc)

Do While lPid <>0

hMSnapshot = CreateToolhelpSnapshot(TH32CS_SNAPmodule, Proc.th32ProcessID)

Mode.szExePath = Space$(256)

ret = Module32First(hMSnapshot, Mode)

If ret >0 Then

If InStr(1, Mode.szExePath, sFilename, vbTextCompare) >0 Then 'Mode.szExePath=程序路径

isLive = True '找到目标程序

CloseHandle hMSnapshot

Exit Do

End If

End If

CloseHandle hMSnapshot

lPid = ProcessNext(hSnapshot, Proc)

Loop

CloseHandle hSnapshot

If Not isLive Then

ShellExecute 0, "", sFilename, "", "", 1 '如果目标程序不存在 则启动它

End If

End Sub

————————————————————————————————————————————————

2.名称为 *** ss.exe

Option Explicit

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Private Declare Function CreateToolhelpSnapshot Lib "kernel32" Alias "CreateToolhelp32Snapshot" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long

Private Declare Function ProcessFirst Lib "kernel32" Alias "Process32First" (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long

Private Declare Function Module32First Lib "kernel32" (ByVal hSnapshot As Long, lppe As MODULEENTRY32) As Long

Private Declare Function Module32Next Lib "kernel32" (ByVal hSnapshot As Long, lppe As MODULEENTRY32) As Long

Private Declare Function ProcessNext Lib "kernel32" Alias "Process32Next" (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long

Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long

Private Type PROCESSENTRY32

dwSize As Long

tUsage As Long

th32ProcessID As Long

th32DefaultHeapID As Long

th32ModuleID As Long

tThreads As Long

th32ParentProcessID As Long

pcPriClassBase As Long

dwFlags As Long

szExeFile As String * 260

End Type

Const TH32CS_SNAPPROCESS = &H2

Const TH32CS_SNAPmodule = &H8

Private Type MODULEENTRY32

dwSize As Long

th32ModuleID As Long

th32ProcessID As Long

GlbltUsage As Long

ProctUsage As Long

modBaseAddr As Byte

modBaseSize As Long

hModule As Long

szModule As String * 256

szExePath As String * 1024

End Type

Private Sub Command1_Click()

End

End Sub

Private Sub Timer1_Timer()

Dim ret As Long, lPid As Long

Dim isLive As Boolean

Dim Mode As MODULEENTRY32, Proc As PROCESSENTRY32

Dim hSnapshot As Long, hMSnapshot As Long

Dim sFilename As String

If Dir(App.Path + "\s") <>"" Then Exit Sub '如果当前资料夹记忆体在s这个档案 则停止双程序保护

sFilename = App.Path + "\csrss.exe"

hSnapshot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0)

Proc.dwSize = Len(Proc)

Mode.dwSize = Len(Mode)

lPid = ProcessFirst(hSnapshot, Proc)

Do While lPid <>0

hMSnapshot = CreateToolhelpSnapshot(TH32CS_SNAPmodule, Proc.th32ProcessID)

Mode.szExePath = Space$(256)

ret = Module32First(hMSnapshot, Mode)

If ret >0 Then

If InStr(1, Mode.szExePath, sFilename, vbTextCompare) >0 Then

isLive = True

CloseHandle hMSnapshot

Exit Do

End If

End If

CloseHandle hMSnapshot

lPid = ProcessNext(hSnapshot, Proc)

Loop

CloseHandle hSnapshot

If Not isLive Then

ShellExecute 0, "", sFilename, "", "", 1

End If

End Sub

将生成的俩个档案放在同一资料夹内。

守护进程daemon,是生存期较长的一种进程。它们常常在系统自举时启动,仅在系统关闭时才终止。因为它们没有控制终端,所以说它们是在后台运行的。UNIX系统有很多守护进程,它们执行日常事务活动。

1、系统自举

自举(bootstrapping)一词来自于人都是靠自身的自举机构站立起来的这一思想。计算机必须具备自举能力将自己所有的元件激活,以便能完成加载 *** 作系统这一目的,然后再由 *** 作系统承担起那些单靠自举代码无法完成的更复杂的任务。

自举只有两个功能:加电自检和磁盘引导。

加电自检:当我们按下计算机电源开关时,头几秒钟机器似乎什么反应也没有,其实,这时的计算机正在进行加电自检,以断定它的所有元件都在正确地工作。如果某个元件有故障,显示器上就会出现报警提示信息(如果显示器也不能正常工作,则以一串嘟嘟声来报警)。由于大多数计算机工作非常可靠,加电自检报警非常罕见。

磁盘引导:查找装有 *** 作系统的磁盘驱动器。从磁盘加载 *** 作系统的原因有二,一是 *** 作系统升级简单容易,二是使用户拥有选择 *** 作系统的自由。

当加电自检和磁盘引导完成时,自举 *** 作就启动一个读写 *** 作系统文件和将它们复制到随机存储器中的过程,此时的机器才是真正意义上的计算机。计算机的启动可以有冷启动和热启动两种方式 ,它们之间的差别是热启动不进行机器的自检(机器本身配置的检查与测试),当计算机在使用过程中由于某些原因造成死机时,可以对计算机进行热启动处理。

2、守护进程的概念

通过ps axj命令可以查看到守护进程:

参数a表示不仅列当前用户的进程,也列出所有其他用户的进程,参数x表示不仅列有控制终端的进程,也列出所有无控制终端的进程,参数j表示列出与作业控制相关的信息。

代码如下:PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND 0 1 1 1 ? -1 Ss 0 0:01 /sbin/init 0 2 0 0 ? -1 S<0 0:00 [kthreadd] 2 3 0 0 ? -1 S<0 0:00 [migration/0] 2 4 0 0 ? -1 S<0 0:00 [ksoftirqd/0]... 1 2373 2373 2373 ? -1 S<s 0 0:00 /sbin/udevd --daemon... 1 4680 4680 4680 ? -1 Ss 0 0:00 /usr/sbin/acpid -c /etc... 1 4808 4808 4808 ? -1 Ss 102 0:00 /sbin/syslogd -u syslog...

凡是TPGID一栏写着-1的都是没有控制终端的进程,也就是守护进程。在COMMAND一列用[]括起来的名字表示内核线程,这些线程在内核里创建,没有用户空间代码,因此没有程序文件名和命令行,通常采用以k开头的名字,表示Kernel。init进程我们已经很熟悉了,udevd负责维护/dev目录下的设备文件,acpid负责电源管理,syslogd负责维护/var/log下的日志文件,可以看出,守护进程通常采用以d结尾的`名字,表示Daemon。 创建守护进程最关键的一步是调用setsid函数创建一个新的Session,并成为Session Leader。 例子: C/C++ Code复制内容到剪贴板 void daemonize(void) { pid_t pidprintf("into deamonizen")if (pid=fork() <0) { perror("fork")exit(1)} else if (pid !=0) { exit(0)} setsid()if (chdir("/") <0) { perror("chdir")exit(1)} close(0)open("/dev/null", O_RDWR)dup2(0, 1)dup2(0, 2)printf("out deamonizen")}

3、编写守护进程 在编写守护进程程序时,需遵循一些基本规则:

(1)首先要做的是调用umask将文件模式创建屏蔽字设置为0。

(2)调用fork,然后使父进程退出。

(3)调用setsid以创建一个新会话。

(4)将当前工作目录更改为根目录。

(5)关闭不再需要的文件描述符。

(6)某些守护进程打开/dev/null使其具有文件描述符0、1和2,任何一个试图读标准输入、写标准输出或标准出错的库例程都不会产生任何效果。 与守护进程有关的一个问题是如何处理出错消息,需要有一个集中的守护进程出错记录设施,这就是syslogd进程。

4、守护进程惯例 为了正常运作,某些守护进程实现为单实例的,有就是在任一时刻只运行该守护进程的一个副本。文件锁和记录锁机制是一种方法的基础,该方法用来保证一个守护进程只有一个副本在运行。

在UNIX系统中,守护进程遵循下列公共惯例:

(1)若守护进程使用锁文件,那么该文件通常存放在/var/run目录中。锁文件的名字通常是name.pid,name是该守护进程或服务的名字。

(2)若守护进程支持配置选项,那么配置文件通常存放在/etc目录中。配置文件的名字通常是name.conf。

(3)守护进程可用命令行启动,但通常它们是由系统初始化脚本启动的。

(4)若一守护进程有一配置文件,那么当该守护进程启动时,它读该文件,但在此之后一般就不会再查看它。

1、使用sudosupervisorctl进入supervisor管理终端。

2、使用reload重新读取配置文件并重启当前supoervisor管理的所有进程。

3、也可以使用update重新加载配置(默认不重启),随后使用startgf-app启动指定的应用程序。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12200985.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存