当前位置:网站首页>守护进程Xinted和日志记录Syslogd
守护进程Xinted和日志记录Syslogd
2022-07-04 10:56:00 【星哥玩云】
1 创建守护进程
1.让init进程成为新产生进程的父进程。
调用fork函数创建子进程后,使父进程立即退出。这样,产生的子进程将变成孤儿进程,并被init进程接管,同时,所产生的新进程将变为在后台运行。
2.调用setsid()
使得新创建的进程脱离控制终端,同时创建新的进程组,并成为该进程组的首进程。
进程组 & 会话 & 控制终端
进程组是一个或多个进程的集合,进程组ID是由领头进程的进程号决定的。
会话是一个或多个进程组的集合,与进程组类似,每个会话都存在一个领头进程。
当用户从终端登录系统,系统会创建一个新的会话。在该终端上启动的进程都会被系统划归到会话的进程组中。
会话中的进程通过该会话中的领头进程与一个终端相连。
由于守护进程不需要控制终端,因此,必须创建新的会话,以脱离父进程的影响,Linux系统提供了setsid函数用于创建新的会话,并使得调用setsid函数的进程成为新会话的领头进程。
setsid()调用成功后,进程成为新的会话组长和新的进程组长,并与原来的登录会话和进程组脱离。
此时进程没有控制终端,但要防止其以后打开控制终端,可以通过使进程不再成为会话组长来禁止进程重新打开控制终端:
if(pid=fork())
exit(0);
3.更改当前工作目录
使用fork函数产生的子进程将继承父进程的当前工作目录。当进程没有结束时,其工作目录是不能被卸载的。为了防止这种问题发生,守护进程一般会将其工作目录更改到根目录下(/目录)。更改工作目录使用的函数是chdir。
4.关闭文件描述符,并重定向标准输入、输出和错误输出
新产生的进程从父进程继承了某些打开的文件描述符,如果不使用这些文件描述符,则需要关闭它们。守护进程是运行在系统后台的,不应该在终端有任何的输出信息。可以使用dup函数将标准输入、输出和错误输出重定向到/dev/null设备上(/dev/null是一个空设备,向其写入数据不会有任何输出)。
5.设置守护进程的文件权限创建掩码
很多情况下,守护进程会创建一些临时文件。出于安全性的考虑,往往不希望这些文件被别的用户查看。这时,可以使用umask函数修改文件权限,创建掩码的取值,以满足守护进程的要求。
简单实现
void init_daemon(void)
{
int pid;
int i;
if(pid=fork())
exit(0); //结束父进程
else if(pid< 0)
exit(1);
//第一子进程,后台继续执行
setsid(); //第一子进程成为新的会话组长和进程组长,并与控制终端分离
if(pid=fork())
exit(0); //结束第一子进程
else if(pid< 0)
exit(1); //
//第二子进程继续执行,第二子进程不再是会话组长
for(i=0;i< NOFILE;++i) //关闭打开的文件描述符
close(i);
chdir("/tmp"); //改变工作目录到/tmp
umask(0); //重设文件创建掩模
return;
}
超级守护进程Xinetd
xinetd能够同时监听多个指定的端口,在接受用户请求时,它能够根据用户请求的端口的不同,启动不同的网络服务进程来处理这些用户请求。
xinetd和stand-alone工作模式相比,运行单个xinetd就可以同时监听所有服务端口,这样就降低了系统开销。
但是对于访问量大、经常出现并发访问的情况,xinetd则要频繁启动相应的网络服务进程,反而会导致系统性能下降。
pstree命令能看到两种不同模式启动的网络服务。一般来说系统中一些负载高的服务,Sendmail、Apache服务是单独启动的;而其他服务类型都可以使用xinetd超级服务器管理。
2 守护进程的日志管理
由于守护进程并不拥有控制终端,因此无法将进程运行信息输出显示。但有时候需要根据进程提供的信息来进行系统管理和维护工作。为此,Linux系统提供了一种特殊的机制来解决守护进程的日志问题。syslogd守护进程通过接收其他守护进程的信息,并将这些信息记录在指定位置来解决日志记录问题。syslogd守护进程会根据消息级别来判断是将消息记录在日志文件,还是显示在用户终端上。
Linux日志管理:
内核信息 -> klogd -> syslogd -> /var/log/dmesg
其他信息 -> syslogd -> /var/log/messages等文件
syslog配置文件 -> /etc/syslog.conf
Syslog原理
syslog负责发送、记录系统内核及工具所产生的信息,由syslog()调用、syslogd守护进程和配置文件/etc/syslog.conf组成。当系统内核及工具产生信息时,通过调用syslog(),把信息送往syslogd,syslogd再根据/etc/syslog.conf中的配置要求,将这些信息分别作如下处理:
1记录到系统日志中
2输出到系统控制台上
3转发给指定的用户
4通过网络转发给其他主机上的syslogd
几乎所有的网络设备都可以通过syslog协议,将日志信息以用户数据报协议(UDP)方式传送到远端服务器,远端接收日志服务器必须通过syslogd监听UDP端口514,并根据 syslog.conf配置文件中的配置处理本机,接收访问系统的日志信息,把指定的事件写入特定文件中,供后台数据库管理和响应之用。意味着可以让任何事件都登录到一台或多台服务器上,以备后台数据库用off-line(离线) 方法分析远端设备的事件。
Syslog.conf配置格式为
服务名[.=!]记录等级 记录文件或主机
日志安全性
设置隐藏属性 chattr +a /var/log/messages,只允许append不可delete
边栏推荐
- [Galaxy Kirin V10] [desktop] FTP common scene setup
- [Galaxy Kirin V10] [server] FTP introduction and common scenario construction
- Appscan installation steps
- Unittest+airtest+beatiulreport combine the three to make a beautiful test report
- Introduction to tree and binary tree
- Canoe: what is vtsystem
- Jemeter plug-in technology
- Canoe - the third simulation project - bus simulation - 3-2 project implementation
- The last month before a game goes online
- [Galaxy Kirin V10] [desktop] cannot add printer
猜你喜欢
![[Galaxy Kirin V10] [desktop] build NFS to realize disk sharing](/img/72/5e725a44a50f152b477a4b2907a2d0.jpg)
[Galaxy Kirin V10] [desktop] build NFS to realize disk sharing

Application and Optimization Practice of redis in vivo push platform

Huge number (C language)

VI text editor and user rights management, group management and time management

TS type gymnastics: illustrating a complex advanced type

Introduction to Lichuang EDA

Oracle11g | getting started with database. It's enough to read this 10000 word analysis
![[Galaxy Kirin V10] [server] NUMA Technology](/img/9b/65466c6fc6336e27e842f50c26b9c3.jpg)
[Galaxy Kirin V10] [server] NUMA Technology

Recursion and divide and conquer strategy

Personal thoughts on the development of game automation protocol testing tool
随机推荐
Canoe: the difference between environment variables and system variables
Huge number (C language)
Performance test overview
2022 ape circle recruitment project (software development)
C language structure to realize simple address book
Locust learning record I
Snake (C language)
Dynamic memory management
CAPL: on sysVar_ Update difference on sysvar
Virtual machine configuration network
Strings and characters
Canoe - the second simulation engineering - xvehicle - 2panel design (principle, idea)
Quick sort (C language)
Canoe - the second simulation project -xvihicle1 bus database design (operation)
Design and common methods of test case documents
shell awk
1. Circular nesting and understanding of lists
/*Rewrite the program, find the value of the element, and return the iterator 9.13: pointing to the found element. Make sure that the program works correctly when the element you are looking for does
How to use diff and patch to update the source code
Canoe: distinguish VT, VN and vteststudio from their development history