Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1945252
  • 博文数量: 424
  • 博客积分: 1291
  • 博客等级: 中尉
  • 技术积分: 2682
  • 用 户 组: 普通用户
  • 注册时间: 2012-08-13 01:34
个人简介

linux oracle 网络安全 编程

文章分类

全部博文(424)

文章存档

2016年(22)

2015年(53)

2014年(57)

2013年(242)

2012年(50)

分类: LINUX

2013-05-17 04:16:38

这一段时间又仔细看了一遍shell脚本高级教程,发现有很多新的收获。

调试shell程序用下面的命令,把执行的过程全部显示出来,很有用的命令:
sh -x -v example.sh 

1. 使用Shell向Syslog日志文件写入信息

应用程序使用Syslog协议发送信息给Linux系统的日志文件(位于/var/log目录)。Sysklogd提供两个系统工具: 一个是系统日志记录, 另一个是内核信息捕获。通常大多程序都使用C语言或者Syslog应用程序或库来发送Syslog消息。

下面介绍如何使用sShell向Syslog日志文件写入信息:

(1). 使用Logger命令

Logger命令是一个Shell命令(接口)。你可以通过该接口使用Syslog的系统日志模块 你还可以从命令行直接向系统日志文件写入一行信息。

比如, 记录硬盘升级后的系统重启信息:

$ logger System rebooted for hard disk upgrade

然后你可以查看/var/log/message文件:

# tail -f /var/log/message

输出为:

Jan 26 20:53:31 dell6400 logger: System rebooted for hard disk upgrade

你也可以通过脚本程序来使用Logger命令。看下面的实例:

#!/bin/bash

HDBS="db1 db2 db3 db4"

BAK="/sout/email"

[ ! -d $BAK ] && mkdir -p $BAK || :

/bin/rm $BAK/*

NOW=$(date +"%d-%m-%Y")

ATTCH="/sout/backup.$NOW.tgz"

[ -f $ATTCH ] && /bin/rm $ATTCH || :

MTO="you@yourdomain.com"

for db in $HDBS

do

FILE="$BAK/$db.$NOW-$(date +"%T").gz"

mysqldump -u admin -p'password' $db | gzip -9> $FILE

done

tar -jcvf $ATTCH $BAK

mutt -s "DB $NOW" -a $ATTCH $MTO <     DBS $(date)

EOF

[ "$?" != "0" ] && logger "$0 - MySQL Backup failed" || :

如果MySQL数据库备份失败, 上面最后一行代码将会写入一条信息到/var/log/message文件。

(2). 其它用法

如果你需要记录/var/log/myapp.log文件中的信息, 可以使用:

$ logger -f /var/log/myapp.log

把消息发送到屏幕(标准错误), 如系统日志:

$ logger -s "Hard disk full"

你可以参考man参考页获得更多的选项信息:

man logger

man syslogd 




[root@cnc-squid2 ~]# man logger
LOGGER(1)                                          BSD General Commands Manual                                          LOGGER(1)

NAME
     logger - a shell command interface to the syslog(3) system log module

SYNOPSIS
     logger [-isd] [-f file] [-p pri] [-t tag] [-u socket] [message ...]

DESCRIPTION
     Logger makes entries in the system log. It provides a shell command interface to the syslog(3) system log module.

     Options:

     -i       Log the process id of the logger process with each line.

     -s       Log the message to standard error, as well as the system log.

     -f file Log the specified file.

     -p pri   Enter the message with the specified priority. The priority may be specified numerically or as a ''facil-
              ity.level'' pair. For example, ''-p local3.info'' logs the message(s) as informational level in the local3 facil-
              ity. The default is ''user.notice.''

     -t tag   Mark every line in the log with the specified tag.

     -u sock Write to socket as specified with socket instead of builtin syslog routines.

     -d       Use a datagram instead of a stream connection to this socket.

     --       End the argument list. This is to allow the message to start with a hyphen (-).

     message Write the message to log; if not specified, and the -f flag is not provided, standard input is logged.

     The logger utility exits 0 on success, and >0 if an error occurs.

     Valid facility names are: auth, authpriv (for security information of a sensitive nature), cron, daemon, ftp, kern, lpr,
     mail, news, security (deprecated synonym for auth), syslog, user, uucp, and local0 to local7, inclusive.

     Valid level names are): alert, crit, debug, emerg, err, error (deprecated synonym for err), info, notice, panic (deprecated
     synonym for emerg), warning, warn (deprecated synonym for warning). For the priority order and intended purposes of these
     levels, see syslog(3).

EXAMPLES
           logger System rebooted
阅读(5300) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~