Linux内核:进程管理 | 您所在的位置:网站首页 › linux的工具 › Linux内核:进程管理 |
【推荐阅读】 一文看懂linux内核详解 linux内核内存管理-写时复制 深入了解使用linux查看磁盘io使用情况 一、syslog简介syslog 是一种工业标准的协议,用来记录设备的日志。Linux日志系统由系统日志监控程序syslogd和内核日志监控程序klogd组成,两个监控程序都是守护程序(daemon),且都注册成了系统服务。syslogd专门记录非内核的其他设备所产生的日志,当系统的控制权由系统交给init的时候,日志信息的记录由syslogd负责记录。Klogd主要负责内核所产生的日志。内核日志记录信息由dmesg /var/log/dmesg查看。 常见linux系统的日志文件: /var/log/dmesg 内核引导信息日志 /var/log/message 标准系统错误信息日志 /var/log/maillog 邮件系统信息日志 /var/log/cron 计划任务日志 /var/log/secure 安全信息日志 完整的syslog日志中包含产生日志的程序模块(Facility)、严重性(Severity或 Level)、时间、主机名或IP、进程名、进程ID和正文。 系统日志信息的格式:timestamp hostname ident[pid]:log message 二、syslog函数Linux系统提供了一组系统日志的接口函数,如下: #include void openlog(const char *ident, int option, int facility); void syslog(int priority, const char *format, ...); void closelog(void);调用openlog、closelog是可选择的。如果不调用openlog,则在第一次调用syslog时,自动调用openlog。 ident:指向信息的指针,一般为程序名,ident所表示的字符串将固定地加在每行日志的前面以标识这个日志,通常就写成当前程序的名称以作标记 option: LOG_CONS Write directly to system console if there is an error while sending to system logger. LOG_NDELAY Open the connection immediately (normally, the connection is opened when the first message is logged). LOG_NOWAIT Don’t wait for child processes that may have been created while logging the message.(The GNU C library does not create a child process, so this option has no effect on Linux.) LOG_ODELAY The converse of LOG_NDELAY; opening of the connection is delayed until syslog() is called. (This is the default, and need not be specified.) LOG_PERROR (Not in POSIX.1-2001.) Print to stderr as well. LOG_PID Include PID with each message. facility: LOG_AUTH security/authorization messages (DEPRECATED Use LOG_AUTHPRIV instead) LOG_AUTHPRIV security/authorization messages (private) LOG_CRON clock daemon (cron and at) LOG_DAEMON system daemons without separate facility value LOG_FTP ftp daemon LOG_KERN kernel messages (these can’t be generated from user processes) LOG_LOCAL0 through LOG_LOCAL7 reserved for local use LOG_LPR line printer subsystem LOG_MAIL mail subsystem LOG_NEWS USENET news subsystem LOG_SYSLOG messages generated internally by syslogd(8) LOG_USER (default) generic user-level messages LOG_UUCP UUCP subsystem level: LOG_EMERG system is unusable LOG_ALERT action must be taken immediately LOG_CRIT critical conditions LOG_ERR error conditions LOG_WARNING warning conditions LOG_NOTICE normal, but significant, condition LOG_INFO informational message LOG_DEBUG debug-level message priority: (security level|facility code) 三、syslog配置文件syslog工具由一个守护程序组成,接受访问系统的日志信息并且根据 /etc/syslog.conf配置文件中的指令处理日志信息。不同的linux发行版本使用不同的日志工具,但都遵循相同的syslog协议。 配置文件:/etc/rsyslog.conf(CentOS 6.7) 配置文件中每行表示一个项目,格式为:facility.level action 由两个部分组成: 第一部分:选择条件(可以有一个或者多个条件),分为两个字段。 选择条件本身分为两个字段,之间用一个小数点(.)分隔。前一字段是一项服务,后一字段是一个优先级。选择条件是对消息类型的一种分类,这种分类便于人们把不同类型的消息发送到不同的地方。在同一个syslog配置行上允许出现一个以上的选择条件,但必须用分号(;)隔开。 常见facility: kern 内核信息; user 用户进程信息; mail 电子邮件相关信息; daemon 后台进程相关信息; authpriv 包括特权信息如用户名在内的认证活动; cron 计划任务信息; syslog 系统日志信息 lpr 打印服务相关信息。 news 新闻组服务器信息 uucp uucp 生成的信息 local0----local7 本地用户信息 优先级级是选择条件的第二个字段,它代表消息的紧急程度。 按严重程度由低到高排序: debug 不包含函数条件或问题的其他信息 info 提供信息的消息 none 没有重要级,通常用于排错 notice 具有重要性的普通条件 warning 预警信息 err 阻止工具或某些子系统部分功能实现的错误条件 crit 阻止某些工具或子系统功能实现的错误条件 alert 需要立即被修改的条件 emerg 该系统不可用 不同的服务类型有不同的优先级,数值较大的优先级涵盖数值较小的优先级。如果某个选择条件只给出了一个优先级而没有使用任何优先级限定符,对应于这个优先 级的消息以及所有更紧急的消息类型都将包括在内。比如说,如果某个选择条件里的优先级是“warning”,它实际上将把“warning”、 “err”、“crit”、“alert”和“emerg”都包括在内。 第二部分:操作动作 日志信息可以分别记录到多个文件里,还可以发送到命名管道、其他程序甚至另一台机器。 syslog 主要支持以下活动: file 指定文件的绝对路径 terminal 或 prin 完全的串行或并行设备标志符 @host(@IP地址) 远程的日志服务器 /etc/rsyslog.conf内容如下: # Log all kernel messages to the console. # Logging much else clutters up the screen. #kern.* /dev/console # Log anything (except mail) of level info or higher. # Don't log private authentication messages! *.info;mail.none;authpriv.none;cron.none /var/log/messages # The authpriv file has restricted access. authpriv.* /var/log/secure # Log all the mail messages in one place. mail.* -/var/log/maillog # Log cron stuff cron.* /var/log/cron # Everybody gets emergency messages *.emerg * # Save news errors of level crit and higher in a special file. uucp,news.crit /var/log/spooler # Save boot messages also to boot.log local7.* /var/log/boot.log四、 搭建Linux日志服务器1、配置/etc/sysconfig/rsyslog文件,让服务器能够接受客户端传来的数据 在“SYSLOGD_OPTIONS”行上加“-r”选项以允许接受外来日志消息。 SYSLOGD_OPTIONS="-r -m 0"2、重新启动syslog守护进程 service rsyslog restart3、配置防火墙 开启514端口 五、配置客户端系统日志配置文件1、配置/etc/rsyslog.conf 修改客户机/etc/syslog.conf文件,在有关配置行的操作动作部分用一个“@”字符指向日志服务器,如: *.* @192.168.6.2002、重启客户端syslog service rsyslog restart3、在日志服务器查看系统日志信息 cat /var/log/messages |tail六、 日志管理工具 logrotate系统管理员可以使用logrotate工具来管理系统中的最新的事件,logrotate还可以用来备份日志文件。 Logrotate是一个日志文件管理工具,用来把旧的日志文件删除,并创建新的日志文件,即日志的转储。一般可以根据日志文件的大小,也可以根据其天数来转储,转储通常通过cron程序来执行。logrotate程序还可以用于压缩日志文件,以及发送日志到指定的E-mail 。logrotate的配置文件是/etc/logrotate.conf。主要参数如下表: 参数 功能compress 通过gzip 压缩转储以后的日志nocompress 不需要压缩时,用这个参数copytruncate 用于还在打开中的日志文件,把当前日志备份并截断nocopytruncate 备份日志文件但是不截断create mode owner group 转储文件,使用指定的文件模式创建新的日志文件nocreate 不建立新的日志文件delaycompress 和 compress 一起使用时,转储的日志文件到下一次转储时才压缩nodelaycompress 覆盖 delaycompress 选项,转储同时压缩。errors address 专储时的错误信息发送到指定的Email 地址ifempty 即使是空文件也转储,这个是 logrotate 的缺省选项。notifempty 如果是空文件的话,不转储mail address 把转储的日志文件发送到指定的E-mail 地址nomail 转储时不发送日志文件olddir directory 转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统noolddir 转储后的日志文件和当前日志文件放在同一个目录下prerotate/endscript 在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行postrotate/endscript 在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行daily 指定转储周期为每天weekly 指定转储周期为每周monthly 指定转储周期为每月rotate count 指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5 个备份tabootext [+] list 让logrotate 不转储指定扩展名的文件,缺省的扩展名是:.rpm-orig, .rpmsave, v, 和 ~size size 当日志文件到达指定的大小时才转储,Size 可以指定 bytes (缺省)以及KB (sizek)或者MB (sizem). /etc/logrotate.conf文件内容如下: # rotate log files weekly weekly # keep 4 weeks worth of backlogs rotate 4 # create new (empty) log files after rotating old ones create # use date as a suffix of the rotated file dateext # uncomment this if you want your log files compressed #compress # RPM packages drop log rotation information into this directory include /etc/logrotate.d # no packages own wtmp and btmp -- we'll rotate them here /var/log/wtmp { monthly create 0664 root utmp minsize 1M rotate 1 } /var/log/btmp { missingok monthly create 0600 root utmp rotate 1 } # system-specific logs may be also be configured here.【文章福利】小编推荐自己的Linux内核技术交流群:【977878001】整理一些个人觉得比较好得学习书籍、视频资料;进群私聊群管理领取内核资料包(含视频教程、电子书、实战项目及代码)内核资料直通车:Linux内核源码技术学习路线+视频教程代码资料 学习直通车:Linux内核源码/内存调优/文件系统/进程管理/设备驱动/网络协议栈 原文作者:首页 - 内核技术中文网 - 构建全国最权威的内核技术交流分享论坛 原文地址:Linux内核:进程管理--Linux系统日志 - 圈点 - 内核技术中文网 - 构建全国最权威的内核技术交流分享论坛(版权归原文作者所有,侵权留言联系删除) |
CopyRight 2018-2019 实验室设备网 版权所有 |