UNIX环境高级编程之syslog

《UNIX环境高级编程》笔记 第十三章-守护进程 1. 概念 守护进程(daemon)是生存期长的一种进程。它们常常在系统引导装入时启动,仅在系统关闭时才终止。因为它们没有控制终端,所以说它们是在后台运行的。 Linux的大多数服务就是用守护进程实现的。这些守护进程名通常以d结尾,如inetd提供网络服务,sshd提供ssh登录服务,httpd提供web服务等待。 大多数守护进程都以超级用户权限运行。 所有守护进程都没有控制终端。用户层守护进程缺少控制终端可能是守护进程调用了setsid的结果(setsid会断开与控制终端的联系)。 大多数用户 阅读详情

产生日志消息的方法

  1. 内核程序可以调用log函数记日志. 任何用户进程可以打开并读取/dev/klog设备读取这些消息
  2. 大多数用户进程,调用syslog函数产生日志消息. 这使得消息发送到UNIX域数据报套接字/dev/log
  3. 用户进程发送日志消息到UDP端口514

日志消息存放地址

通常syslogd守护进程会读取一个配置文件(/etc/syslog.conf)来决定不同类型的消息应该送到何处.

syslog相关函数

#include <syslog.h>

void openlog(const char* ident,int option,int facility);

void syslog(int priority,const char* format,...);

void vsyslog(int priority,const char* format,va_list arg);

void closelog();

/* 返回旧的日志优先级屏蔽值 */
int setlogmask(int maskpriority);

openlog说明

  • 调用openlog是可选择的,若不调用openlog则第一次调用syslog时自动调用syslog
  • 参数ident一般为程序名称.可以用来表示是哪个进程发送的消息日志,openlog会将它加到每则日志消息中
  • option参数是指定许多选项的位屏蔽

    options说明
    LOG\_CONS若无法将信息发送到syslogd,则直接输出到控制台
    LOG\_NDELAY立即打开与syslogd的连接,默认为第一次写日志时才建立连接
    LOG\_ODELAY在就第一条消息时才建立与syslogd的连接
    LOG\_PERROR输出到stderr中
    LOG\_NOWAITsyslog记录日志时可能会fork子进程,该选项表示不wait子进程退出
    LOG\_PID每条消息都记录下进程ID
  • 参数facility说明

    参数facility指明了默认的消息种类. 消息种类会根据syslogd的配置文件来分发到不同位置

    facility说明
    LOG\_AUTH认证相关的信息,入login,su,getty产生的信息
    LOG\_CRON由cron或at产生的信息
    LOG\_DAEMON系统守护进程产生的消息
    LOG\_FTPFTP守护进程产生的消息
    LOG\_KERN内核产生的消息
    LOG\_LOCAL0 – LOG\_LOCAL7保留本地使用
    LOG\_LPR行打印系统产生的消息
    LOG\_MAIL邮件系统产生的消息
    LOG\_NEWSUsenet网络新闻系统产生的消息
    LOG\_SYSLOGsyslogd本身产生的消息
    LOG\_USER来自其他用户进程的消息(默认)
    LOG\_UUCPUUCP系统产生的消息

syslog函数豁免

参数priority可以用来指明消息的 种类 和 等级

即priority的可选择同时包含了openlog中facility参数的可选择和level可选值

facility说明
LOG\_AUTH认证相关的信息,入login,su,getty产生的信息
LOG\_CRON由cron或at产生的信息
LOG\_DAEMON系统守护进程产生的消息
LOG\_FTPFTP守护进程产生的消息
LOG\_KERN内核产生的消息
LOG\_LOCAL0 – LOG\_LOCAL7保留本地使用
LOG\_LPR行打印系统产生的消息
LOG\_MAIL邮件系统产生的消息
LOG\_NEWSUsenet网络新闻系统产生的消息
LOG\_SYSLOGsyslogd本身产生的消息
LOG\_USER来自其他用户进程的消息(默认)
LOG\_UUCPUUCP系统产生的消息
  
LOG\_EMERG紧急状态(系统不可用)
LOG\_ALTERT必须立即修复的状态
LOG\_CRIT严重状态(例如硬件故障)
LOG\_ERR出错信息
LOG\_WARNING警告信息
LOG\_NOTICE正常,但重要的消息
LOG\_INFO消息性质的信息
LOG\_DEBUG调试信息

closelog说明

closelog也是可选的,只有在调用openlog后才需要调用. 它用于关闭曾被用于与syslogd守护进程通信的描述符

setlogmask

setlogmask函数用于设置进程的日志优先级屏蔽字.

只有在记录的消息优先级高于屏蔽字中的级别才会被记录下来.

设置屏蔽字为0,并不产生任何作用

用Syslog Server收集UNIX和Windows日志  在比较大规模的网络应用或者对安全有一定要求的应用中,通常需要对系统的日志进行记录分类并审核,默认情况下,每个系统会在本地硬盘上记录自己的日志,这样虽然也能有日志记录,但是有很多缺点:首先是管理不便,当服务器数量比较多的时候,登陆每台服务器去管理分析日志会十分不便,其次是安全问题,一旦有入侵者登陆系统,他可以轻松的删除所有日志,系统安全分析人员不能得到任何入侵信息。因此,在网络中安排一台专用的 阅读详情

相关推荐

syslog.h使用

linux操作系统现在rsyslogd取代了原先的syslogd服务,rsyslog 是一个 syslogd 的多线程增强版,其配置语法与syslogd的配置文件一致。(2) format:们与传入 printf()中的参数是一样的,但与 printf()不同的是这里的格式字符串不需要包含一个换行字符。LOG_UPTO()宏创建一个能过滤特定级别以及以上的所有消息的位掩码。(2)传入 openlog()的 log_options 参数是一个位掩码,它是下面几个常量之间的 OR 值。

oorik的博客 1345

setlogmask(int mask)函数讲解

setlogmask函数设置syslog记录屏蔽字。参数int mask低8位是syslog记录的屏蔽字,对应关系如下。 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 LOG_DEBUG LOG_INFO LOG_NOTICE LOG

ggmjxry的专栏 5076

阻容降压 vs 开关电源:5V小功率供电方案成本与安全深度对比

本文深度对比了阻容降压电路与开关电源在5V小功率供电方案中的核心差异。重点剖析了二者在成本、体积、效率、温升及安全隔离等方面的优劣,并结合智能温控器、LED驱动等典型应用场景,为硬件工程师提供了清晰的选型决策框架,帮助在成本与安全之间做出最佳权衡。

weixin_29310631的博客 702

Unix/Linux编程:syslog进程与日志输出

守护进程: 在后台运行而且不和任何控制终端关联的进程 syslogd守护进程 Unix系统中的syslogd守护进程通常由某个系统初始化脚本启动,而且在系统工作期间一直运行。 源自Berkeley的syslogd实现在启动时执行以下步骤 (1) 读取配置文件 /etc/syslog.conf指定本守护进程可能收取的各种日志信息应该如何处理 这些消息可能被添加到一个文件(/dev/console文件是一个特例,它把消息写到控制台上),或者被写到指定用户的登录窗口(如果该用户已经登录到本守护进程所在.

OceanStar的博客 6749

PackML工业标准解析:统一机器状态管理与数据交换的实践指南

在工业自动化与智能制造领域,实现设备间的互联互通与高效协同是核心挑战。这背后依赖于一套标准化的机器行为与数据交换规范,其原理在于通过定义统一的状态模型与接口协议,消除不同厂商设备间的“语言”隔阂。这项技术的核心价值在于大幅降低系统集成复杂度、提升运维效率与生产透明度,是构建数字化工厂的基石。其典型应用场景包括包装机械、离散制造产线等需要多设备协同的领域。本文聚焦的PackML(包装机械语言)标准,正是这一理念的杰出实践,它通过一套严谨的**状态机模型**和**数据标签(PackTags)** 体系,为机器提

weixin_30070339的博客 402

shader多图叠加变换

shader Shader "Paint3D/AddTexture" { Properties { _MainTex ("Main Texture", 2D) = "white" {} _MainColor("Main Color", Color)=(1,1,1,1) _AddTex0 ("Texture0", 2D) = "white" {} _AddTex1 ("Texture1", 2D) = "white" {} .

李长江的博客 909

setlogmask() linux

来源:http://www.gnu.org/software/libc/manual/html_node/setlogmask.html The symbols referred to in this section are declared in the file syslog.h. — Function: int setlogmask (int mask) setlogmask

xiaocaichonga的专栏 1091

操作系统头歌 课后作业3.3.2:进程的调度

请问:从 6 号进程刚创建完 7 号进程开始,在接下来的 9 次进程调度中,每次调度时,6 号和 7 号进程的剩余时间片是多少?请问:从 6 号进程刚创建完 7 号进程开始,在接下来的 9 次进程调度中,每次调度时,6 号和 7 号进程的剩余时间片是多少?根据相关知识回答当程序 01.c 运行时(在版本 0 内核中),会在父子两个进程(假设分别为 6 号和 7 号进程)中分别输出字符串。当程序 01.c 运行时(在版本 0 内核中),会在父子两个进程(假设分别为 6 号和 7 号进程)中分别输出字符串。

weixin_73255571的博客 4722

UNIX环境高级编程 学习笔记 第十三章 守护进程

守护进程的生存期长,它们常常在系统引导时启动,仅在系统关闭时才终止,它们没有控制终端,是在后台运行的。 如果在基于BSD的系统上执行: ps -axj -a选项显示由其他用户拥有的进程状态;-x选项显示没有控制终端的进程状态;-j选项显示与作业有关的信息(如会话ID、进程组ID、控制终端、终端进程组ID),基于System V的系统中,与此相类似的命令为ps -efj。为提高安全性,某些UNIX系统不允许用户使用ps命令查看不属于自己的进程。以上命令输出为: 从左到右每列含义依次为:用户ID、进程ID、

tus00000的博客 638

【AI Agent 实战】OpenClaw 全面解析 + 全平台一键部署教程(本地 AI 智能体)

本文收录于 AI 智能体 & 自动化实战系列,手把手带你从零部署本地可控的 AI 执行助手关键词:OpenClaw、AI Agent、本地 AI 部署、自动化助手、Docker 部署

爱人爱己,风生水起 7935

iStoreOS等软路由插件卸载的残留?分享一款软路由高级卸载工具,自定义卸载,轻松解决卸载残留问题

iStoreOS用户看过来!👀 还在被插件包残留困扰吗?本文分享一款“高级卸载”的插件,助你深度清理iStoreOS系统,彻底解决软件卸载不净的痛点,告别频繁恢复出厂设置的烦恼!🚀

XiaoqiangClub的博客 1544

用于守护进程的出错处理函数

/* * Error routines for programs that can run as a daemon. */ #include "apue.h" #include &lt;errno.h&gt; /* for definition of errno */ #include &lt;stdarg.h&gt; /* ISO C variable argum...

weixin_33739523的博客 130

使用 FastAPI 和 LangGraph 构建生产级智能体 AI 系统

这是一本关于使用 FastAPI 和 LangGraph 构建生产级智能体 AI 系统的详细书籍,全文约 10 万字。《Production-Grade Agentic AI System Design and Implementation: Building Agentic AI Systems Using FastAPI and LangGraph》随着人工智能(AI)技术的迅猛发展,智能体(Agent)作为能够自主感知、推理、决策和行动的实体,正逐渐成为构建复杂智能系统的核心。从个性化推荐、客户服务到

AI天才研究院 348

UNIX环境高级编程——守护进程

UNIX环境高级编程——守护进程

qq_38154295的博客 676

YOLOv12涨点改进 | 全网独家首发Conv改进篇 | Arxiv 2025 | 引入一种新的WConv加权卷积改进YOLOv12,显著提升其特征提取能力和目标检测精度

本文提出了一种新型加权卷积(WConv)模块,通过引入最优密度函数动态调整邻域像素权重,显著提升了YOLOv12目标检测性能。WConv在保持参数数量不变的情况下,提高了模型精度(VGG准确率提升10%)、增强了小目标检测能力,并改善了多尺度特征提取。文中详细介绍了模块原理、网络结构改进方法,并提供了核心代码实现和yaml配置文件。实验表明,该方法在图像任务中最高可降低53%的损失,虽然会带来11%的时间开销,但具有优异的鲁棒性。该技术可广泛应用于2D/3D图像处理领域。

Ai缝合怪、助力小伙伴高效发论文 216

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

linux命令中文手册,Linux命令在线中文手册

unix network programming&lpar;3rd&rpar;Vol&period;1 &lbrack;第13~15章&rsqb;《读书笔记系列》第13章 守护进程和inetd 超级服务器 syslog() daemon_init() setuid() setgid() 第14章 高级IO 标准I/O函数库,支持3种缓冲 缓冲(读写存储设备(...

weixin_42315706的博客 639

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

syslog的配置和编程

syslog的编程和配置 本文档的Copyleft归yfydz所有,使用GPL发布,可以自由拷贝,转载,转载时请保持文档的完整性,严禁用于任何商业用途。msn: yfydz_no1@hotmail.com来源:http://yfydz.cublog.cn 参考文献:man syslog syslogd syslog.conf openlog, RFC3164 1. 前言

higoalhwl的专栏 1805

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

syslog总结

linux logger子系统学习总结。

烂笔头 2万+

《UNIX环境高级编程》笔记--出错记录

与守护进程有关的一个问题是如何处理出错消息。因为它没有控制终端,所以不能只是简单地写到标准出错上,我们希望 有一个集中的守护进程出错记录设施。 自4.2BSD以来,BSD syslog设施得到了广泛应用。大多数守护进程使用这一设施。下图显示了syslog设置的详细组织结构; 有三种方法产生日志消息: 1.内核例程可以调用log函数。任何一个进程通过打开然后读/dev/klog设备就

TODD911的专栏 1928

unix syslog配置

syslog 配置   来源: ChinaUnix 博客  日期: 2007.03.13 11:17  ( 共有条评论) 我要评论   一.syslog 基本介绍 本文作者:zcj 来源: http://www.unixren.com 本文可以任意转载, 请保留作者和来源 日志文件由系统日志和内核日志监控程序syslogd 与klogd 控制,...

hongliangpan 462

守护进程_第十三章_《UNIX环境高级编程(第三版)》_笔记

以上8步(含日志初始化)构成创建守护进程的标准函数,调用后即可将普通进程转为守护进程。核心逻辑是「脱离终端→独立会话→释放资源→保证权限」,每一步都不可省略,否则会导致守护进程不稳定。7步标准创建流程(两次fork+setsid+资源清理)是基础;syslog日志机制是守护进程输出信息的唯一合法方式;信号处理需保证“可重入”,重点处理SIGTERM(退出)和SIGHUP(重载);避免多实例、意外获得终端、资源泄露是关键避坑点。

C/C++ 997

golang 写日志到syslog

应用程序可以通过 UNIX domain sockets, UDP or TCP,向syslog守护进程发送日志。syslog守护进程可以在远端。 这样,就可以不用单独收集应用程序的日志了。 golang提供了syslog 包,只需要调用Dial(),就可以连接syslog服务器,然后发送消息。 在写失败的情况下,syslog client会尝试重连syslog服务器,并重写。 Dial定义如下...

翔云 8686

用syslog记录UNIX日志

<br />一, 记录UNIX类主机的log信息:<br />首先需要对Freebsd的syslog进行配置,使它允许接收来自其他服务器的log信息。<br />在/etc/rc.conf中加入:<br />syslogd_flags="-4 -a 0/0:*"<br />说明:freebsd的syslogd参数设置放在/etc/rc.conf文件的syslogd_flags变量中<br />Freebsd对syslogd的默认设置参数是syslogd_flags="-s",(可以在/etc/default

satanwxd的专栏 4620

关于syslog

syslog架构 Unix/Linux系统中的大部分日志都是通过一种叫做syslog的机制产生和维护的。syslog是一种标准的协议,分为客户端和服务器端,客户端是产生日志消息的一方,而服务器端负责接收客户端发送来的日志消息,并做出保存到特定的日志文件中或者其他方式的处理。 在Linux中,常见的syslog服务器端程序是syslogd守护程序。这个程序可以从三个地方接收日志消息:(1

smstong的成长轨迹 3万+

由一个简单需求到Linux环境下的syslog、unix domain socket

需求: 回到顶部   工作中有一个在Linux(debian8)环境下运行的服务器程序,用python语言实现,代码中有不同优先级的日志需要记录,开发的时候都是使用python的logging模块输出到文件,示例代码如下:    1 import logging, os 2 3 logger = None 4 def get_logger(): 5 global

g6uqwseseo的博客 848
上一篇: 线程与fork(2) (进程):把它们一起使用前,请谨慎考虑 (翻译)
下一篇: UNIX环境高级编程之线程
darksun9972
博客等级 码龄19年 42粉丝 399原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值