LAH 笔记 Syslog and Log Files

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.





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
# 连接到MySQL 数据库 conn = mysql.connector.connect( host='120.78.240.31', user='game', password='LmmaFmxZ7M7r7LAh', database='game', charset='utf8' ) cursor = conn.cursor() # 查询示例数据 cursor.execute('SELECT zs_library.id,zs_library.number, zs_library.zs_name,game.game_name,zs_library.txt_url,' 'zs_library.tupian_url1,zs_library.tupian_url2,zs_library.tupian_url3,zs_library.tupian_url4,' 'zs_library.tupian_url5,zs_library.tupian_url6,zs_library.tupian_url7,zs_library.tupian_url8,' 'zs_library.tupian_url9,zs_library.tupian_url10,zs_library.tupian_url11,zs_library.tupian_url12,' 'zs_library.tupian_url13,zs_library.tupian_url14,zs_library.tupian_url15,zs_library.tupian_url16,' 'zs_library.tupian_url17,zs_library.tupian_url18,zs_library.tupian_url19,zs_library.tupian_url20,' 'zs_library.dates FROM zs_library JOIN game ON ' 'zs_library.game_id = game.id WHERE zs_library.id=%s',(int(zs_library_id),)) items = cursor.fetchall() arr = [] arrsd = [] for k in range(0, len(items[0])): if k == 1 or k == 2 or k == 3 or k == 4: arr.append(items[0][k].decode("utf-8")) elif k == 5 or k == 6 or k == 7 or k == 8 or k == 9 or k == 10 or k == 11 or k == 12 or k == 13 or k == 14 or k == 15 or k == 16 or k == 17\ or k == 18 or k == 19 or k == 20 or k == 21 or k == 22 or k == 23 or k == 24: if items[0][k]: arrsd.append(items[0][k]) else: arrsd.append('') else: arr.append(items[0][k]) # 获取对应数据库的内容 with open(arr[4], "r", encoding="utf-8") as file: content = file.read() new_content = content.replace("\n\n", "<br><br>") return template("gameedit.html", number=number, items=arr,arrsd='_*'.join(arrsd), id=id,content=new_content)
最新发布
06-11

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值