阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

守护进程Xinted和日志记录Syslogd

491次阅读
没有评论

共计 2998 个字符,预计需要花费 8 分钟才能阅读完成。

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

————————————– 分割线 ————————————–

RHEL5.4 部署中央日志服务器之 rsyslog+Log Analyzer http://www.linuxidc.com/Linux/2012-01/51853.htm

CentOS 6.3 下利用 Rsyslog+LogAnalyzer+MySQL 部署日志服务器 http://www.linuxidc.com/Linux/2013-07/86956.htm

使用 rsyslog mysql 和 logAnalyzer 的日志服务器 http://www.linuxidc.com/Linux/2012-09/70717.htm

CentOS 6.3 下利用 Rsyslog+LogAnalyzer+MySQL 部署日志服务器 http://www.linuxidc.com/Linux/2013-07/86956.htm

RHEL5.4 部署中央日志服务器之 rsyslog+loganalyzer  http://www.linuxidc.com/Linux/2010-12/30801.htm

————————————– 分割线 ————————————–

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计2998字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19350
评论数
4
阅读量
7956545
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face 免费服务器 +Docker 快速部署 HertzBeat 监控平台 ...
星哥带你玩飞牛NAS-5:飞牛NAS中的Docker功能介绍

星哥带你玩飞牛NAS-5:飞牛NAS中的Docker功能介绍

星哥带你玩飞牛 NAS-5:飞牛 NAS 中的 Docker 功能介绍 大家好,我是星哥,今天给大家带来如何在...
240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

  240 元左右!五盘位 NAS 主机,7 代 U 硬解 4K 稳如狗,拓展性碾压同价位 在 NA...
手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板 前言 大家好,我是星哥。星哥发现很多新手刚接触服务器时,都会被“选购...
国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号 AI 知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率 大家好,我是星哥,...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸 前言 作为天天跟架构图、拓扑图死磕的...
星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛 NAS 硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话? 前言 在选择 NAS 用预...
星哥带你玩飞牛NAS硬件03:五盘位+N5105+双网口的成品NAS值得入手吗

星哥带你玩飞牛NAS硬件03:五盘位+N5105+双网口的成品NAS值得入手吗

星哥带你玩飞牛 NAS 硬件 03:五盘位 +N5105+ 双网口的成品 NAS 值得入手吗 前言 大家好,我...
星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

  星哥带你玩飞牛 NAS-16:不再错过公众号更新,飞牛 NAS 搭建 RSS 对于经常关注多个微...
150元打造低成本NAS小钢炮,捡一块3865U工控板

150元打造低成本NAS小钢炮,捡一块3865U工控板

150 元打造低成本 NAS 小钢炮,捡一块 3865U 工控板 一块二手的熊猫 B3 工控板 3865U,搭...