1. syslog的进程名保存在/etc/run/syslogd.pid
/etc/run 下面有很多后缀为.pid的文件,保存的都是相关进程的pid
如果需要更新log文件而结束syslogd的话,可以利用这个文件得到pid:kill -signal `cat /var/run/syslogd.pid`,或者利用kill的变体 killall,它可以通过进程名来向进程发送信号:killall -e -signal syslogd
信号 SIGHUP 可以通知守护进程,重新读取它们的配置文件
2. 日志文件保存在 /var/log,一些发行版可能还在/var/adm保存能部分日志文件;
日志文件通常所有者是root,大部分应该设置为600;作为折中,也可以设置为某一个组所有,然后添加某个管理员到这组中,那么他就可以查看了。
syslog 配置文件在 /etc/syslog.conf
3. 日志文件归纳
Filenames are relative to /var/log unless otherwise noted.
The character in the Where column tells how the log file is specified: S for programs
that use syslog, F for programs that use a configuration file, and H if the filename is
hardwired in code. The Freq column offers our suggested cleanup frequency. The
Distros column lists the distributions to which the entry applies.
secure, auth.log 和 sudo.log 不能随意被其他用户浏览;日志文件不能让其他用户修改。
4. /var/log/wtmp 包含用户登录、登出信息,是二进制文件,用last命令解码。
5. Kernel and booting-time logging
内核日志放置在一个有限大小缓冲中,当系统起来以后,由dmesg重定向到/var/log/dmesg(SUSE是/var/log/boot.msg)
klogd 处理内核运行中的日志,通常 klogd读取内核缓冲并传递给syslog处理,syslog 通常把这些日志写到 /var/log/messages
6. logrotate 程序
可以通过配置它来管理一组日志文件,配置文件在/etc/logrotate.conf,它通常会 include /etc/logrotate.d/,一些安装包会复制一些文件到这个目录下。
cron通常每天运行 logrotate 一次
具体配置方法,选项,参考 10.3节,下面是一个例子:
/var/log/dpkg.log {
monthly
rotate 12
compress
delaycompress
missingok
notifempty
create 644 root root
}
debian ubuntu 还包含一个savelog程序,直接操作单个日志文件。
7. syslog: the system event logger
syslog 由三部分组成:
syslogd 后台日志程序
openlog 函数库,提交消息到syslog
logger 用户命令行程序,用于从shell提交日志
信号 HUP 令syslogd 关闭并重新读取配置文件 /etc/syslog.conf
syslogd 把自己的pid写入到/var/run/syslogd.pid
下面例子向syslog 发送hangup 信号:
# kill -HUP `/bin/cat /var/run/syslogd.pid`
/etc/syslog.conf 基本格式如下:
selector<tab>action
![]()
![]()
比如:
mail.info /var/log/maillog
syslog.conf 中指定了需要日志的最小的级数,还哟其他更细粒度的控制,如下表指示:
syslogd 可以接收其他机器发送的消息,需要启动时加上 -r ;也可以转发消息,-h 。
8.