linux命令之logger
logger 用于往系统中写入日志,他提供一个shell命令接口到syslog系统模块
logger 语法
logger [options] [messages]**options (选项):**
-d, --udp
使用数据报(UDP)而不是使用默认的流连接(TCP)
-i, --id
逐行记录每一次logger的进程ID
-f, --file file_name
记录特定的文件
-h, --help
显示帮助文本并退出
-n, --server
写入指定的远程syslog服务器,使用UDP代替内装式syslog的例程
-P, --port port_num
使用指定的UDP端口。默认的端口号是514
-p, --priority priority_level
指定输入消息的优先级,优先级可以是数字或者指定为 " facility.level" 的格式。比如:" -p local3.info " local3 这个设备的消息级别为 info。默认级别是 "user.notice"
-s, --stderr
输出标准错误到系统日志。
-t, --tag tag
指定标记记录
-u, --socket socket
写入指定的socket,而不是到内置系统日志例程。
-V, --version
现实版本信息并退出
**messages:**写入log文件的内容消息,可以与-f配合使用。
logger 以0退出表示成功,大于0表示失败。
日志级别facility:
auth: 用户授权
authpriv: 授权和安全
cron: 计划任务
daemon: 系统守护进程
kern: 与内核有关的信息
lpr 与打印服务有关的信息
mail 与电子邮件有关的信息
news 来自新闻服务器的信息
syslog 由syslog生成的信息
user 用户的程序生成的信息,默认
uucp 由uucp生成的信息
local0~7 用来定义本地策略
level:
alert 需要立即采取动作
crit 临界状态
debug 调试
emerg 系统不可用
err 错误状态
error 错误状态
info 正常消息
notice 正常但是要注意
示例:$ logger System Rebooted #往系统日志例程中写入 “System Rebooted” 可在/var/log/syslog中查看
写入到指定的log文件中示例:$ vi /etc/rsyslog.conf #我的系统是ubuntu1204,在最后一行加入 local3.* /var/log/my_test.log 意思是来自local3的所有消息都记录到 /var/log/my_test.log 中
$ service rsyslog restart #重启rsyslog服务
$ logger -i -t "my_test" -p local3.notice "test_info"
$ cat /var/log/my_test.log
May 5 21:27:37 gino-virtual-machine my_test[3651]: test_info
下面来实践操作演示:
1 #########################################################################
2 # File Name: checkfs.sh
3 # Author: dty
4 # mail: 576786031@qq.com
5 # Created Time: Fri 07 Aug 2015 05:40:39 PM CST
6 #########################################################################
7 #!/bin/bash
8 logger -t checks -p user.info "starting checkfs" //-t指定标记记录。 -p 指定了日志级别info正常
9 df | cut -c52- |grep -v "Use%" |while read usage filesystem
10 do
11 if [ "${usage%\%}" -gt "85" ];then
12 logger -t checkfs -s -p user.warn "filesystem $filesystem is at $usa ge" //-s 输出标准错误。warn级别
13 fi
14 done
日志情况如下
Aug 7 18:18:55 server7 checks: starting checkfs
Aug 7 18:18:59 server7 checks: starting checkfs
Aug 7 18:19:00 server7 checks: starting checkfs
脚本我手动运行三次什么都没有
[root@server7 ~]# df | cut -c58-
Use% Mounted on
25% /
0% /dev/shm
8% /boot因为最大才25%
现在我们把useage 的界限值更改 1 #########################################################################
2 # File Name: checkfs.sh
3 # Author: dty
4 # mail: 576786031@qq.com
5 # Created Time: Fri 07 Aug 2015 05:40:39 PM CST
6 #########################################################################
7 #!/bin/bash
8 logger -t checks -p user.info "starting checkfs"
9 df | cut -c52- |grep -v "Use%" |while read usage filesystem
10 do
11 if [ "${usage%\%}" -gt "15" ];then
12 logger -t checkfs -s -p user.warn "filesystem $filesystem is at $usage"
13 fi
14 done此时再次运行
Aug 7 18:16:18 server7 checks: starting checkfs
Aug 7 18:16:18 server7 checkfs: filesystem / is at 25%
只显示这一条
ok
我们的用户可以是普通用户
都不能去读日志的用户 ,依然可以做到,这就是问题所所在...