将shell脚本运行情况写入Rsyslog日志server
在运维工作中,免不了编写一些脚本交由计划任务(cron)去定时运行完毕一些日常工作,实现运维工作自己主动化。比方在我的日常工作中备份数据是一项重要的工作,须要定时将数据备份到备份服器和一些其它的备份介质中。
其中大部分的备份工作都是写到脚本其中,并编辑/etc/crontab去定时完毕备份任务。这样节省了不少日常工作的压力。
为了监控脚本的运行情况。在编写脚本的时候将运行情况的情况追加写入到本地指定的日志文件其中,定期去查看这些文件来确保任务被正确的运行。
可是,随着须要备份的server的增多,运行查看日志的工作就变成了一种负担。一般是须要逐个登录每台server去检查日志文件。
为了解决上述问题,我打算将全部的备份日志写入到一台备份server其中,这样就能够实现日志的集中收集管理和查看了。
为些我在前几天搭建了一台日志server用来收集每台server的日志信息(请參见:Centos6.7搭建Rsyslog日志server)。
日志server也搭建完了。问题也出现了,怎样将脚本中的运行情况写入到日志server中呢?事实上。因为日志server已经搭建完毕,仅仅须要将须要记录信息写入到本地日志系统,那么本地rsyslog服务就会将日志信息同一时候写入到远端的日志server数据库中。
将自己定义的信息写入到本地日志系统须要用到:logger 命令
logger 是一个shell 命令接口。能够通过该接口使用Syslog的系统日志模块,还能够从命令行直接向系统日志文件写入一行信息。
用法举例:
logger -it error -p local5.info "hello world"
-i 在每行都记录进程ID
-t 日志中的每一行都加一个error标签
-p 指定自己定义的日志设备和日志级别。相关内容參见文章附录
最后一个參数中的双引號(“”)中的文本内容就是自己定义日志信息。在脚本中针对命令的运行结果(echo $?
)进行if推断,然后使用logger输出不同的日志信息就可以。如:
umount -l /mnt
if [ `echo $?` -eq 0 ]; then
logger -p local3.info "Umount /dev/sdd1 is OK!"
else
logger -p local3.err "Umount /dev/sdd1 is Failure!"
fi
上面的脚本是卸载U盘或者移动硬盘时用到的角本。
依据 echo $? 的返回值,将 info 或者 err级别的自己定义日志信息写入到系统日志中。
配合Rsyslogserver使用就能够实现shell脚本运行情况的集中收集与管理了。
附:日志类型和日志级别
日志类型
| 日志类型 | 说明 |
|---|---|
| auth | pam产生的日志 |
| authpriv | ssh,ftp等登录信息的验证信息 |
| cron | 时间任务相关 |
| kern | 内核 |
| lpr | 打印 |
| 邮件 | |
| mark(syslog) | rsyslog服务内部的信息,时间标识 |
| news | 新闻组 |
| user | 用户程序产生的相关信息 |
| uucp | unix to unix copy, unix主机之间相关的通讯 |
| local1~7 | 自己定义的日志设备 |
日志级别
从上到下。级别从低到高,记录的信息越来越少 具体的能够查看手冊: man 3 syslog
| 级别 | 说明 | 级别值 |
|---|---|---|
| debug | 有调式信息的,日志信息最多 | 7 |
| info | 一般信息的日志,最经常使用 | |
| notice | 最具有重要性的普通条件的信息 | |
| warning | 警告级别 | 4 |
| err | 错误级别,阻止某个功能或者模块不能正常工作的信息 | |
| crit | 严重级别,阻止整个系统或者整个软件不能正常工作的信息 | |
| alert | 须要立马改动的信息 | |
| emerg | 内核崩溃等严重信息 | |
| none | 什么都不记录 |
将shell脚本运行情况写入Rsyslog日志server的更多相关文章
- Linux下Shell脚本运行程序不输出日志到终端
使用: 脚本路径/脚本名 >/dev/>& 说明: 可以简单的理解/dev/null是Linux下的回收站 >默认是把标准输出重定向 2>&1是把出错输出也定向 ...
- IDEA部署项目,并结合Shell脚本运行Java程序
一.概述 在实际开发中,我们写好的代码,往往打成war包或jar包,通过winscp或其他软件将其上传至服务器,然而这样非常大的一个弊端就是不利于开发,为什么这么说呢?假如我们刚刚将springboo ...
- 基于sparksql调用shell脚本运行SQL
[Author]: kwu 基于sparksql调用shell脚本运行SQL,sparksql提供了类似hive中的 -e , -f ,-i的选项 1.定时调用脚本 #!/bin/sh # uplo ...
- 利用shell脚本实现nginx 的logs日志分割
Nginx 是一个非常轻量的 Web 服务器,体积小.性能高.速度快等诸多优点.但不足的是也存在缺点,比如其产生的访问日志文件一直就是一个,不会自动地进行切割,如果访问量很大的话,将 导致日志文件容量 ...
- SHELL脚本运行的几种方法以及区别
#1 给脚本加上执行权限chmod u+x a.sh, 而后就可以直接用全路径来执行脚本了,比如当前文件夹下用./a.sh,如果如果脚本所在目录在PATH环境变量之中, 则直接用a.sh即可(这和运行 ...
- Ubuntu下shell脚本运行异常:bash和dash的区别
Ubuntu下我用bash到语法写了一个shell脚本(准确的说是把书上的脚本敲进电脑),在ubuntu下,用sh test.sh来运行,但是出现了意料之外到结果,比如echo -e "\n ...
- shell脚本运行java程序jar
在UBuntu上部署项目的时候,我们往往通过一段shell来启动程序,甚至是通过crontab定时任务来定时的调用java程序,但是很奇怪的一个问题就是,比如我写了一个如下的shell脚本: #!/b ...
- buntu下shell脚本运行异常:bash和…
转载于:http://www.51testing.com/?uid-225738-action-viewspace-itemid-208702 我用bash到语法写了一个shell脚本(准确的说是把书 ...
- Shell脚本运行报错Bad substitution解决办法
环境Ubuntu18.4.02 脚本运行报错 # sh test.sh test.sh: 2: test.sh: Bad substitution 原因 从 ubuntu 6.10 开始,ubuntu ...
随机推荐
- Vue的数据依赖实现原理简析
首先让我们从最简单的一个实例Vue入手: const app = new Vue({ // options 传入一个选项obj.这个obj即对于这个vue实例的初始化 }) 通过查阅文档,我们可以知道 ...
- Android开发新手HelloWorld解析
首先看这个 HelloWorld 类. Java代码public class HelloWorld extends Activity { /** Called when the activ ...
- [LeetCode] 242. 有效的字母异位词 valid-anagram(排序)
注意这里字母异位词的定义是:字母类别及个数都要一样,只是排列顺序不同. class Solution(object): def isAnagram(self, s, t): ""& ...
- NOIP2018提高组金牌训练营——搜索专题
NOIP2018提高组金牌训练营——搜索专题 1416 两点 福克斯在玩一款手机解迷游戏,这个游戏叫做”两点”.基础级别的时候是在一个n×m单元上玩的.像这样: 每一个单元有包含一个有色点.我们将用不 ...
- 洛谷 P1582 倒水 (二进制)
这道题实际上是考二进制 很容易看出杯子水量一定是2的i次方 所以n杯水最后剩下的水一定是n用二进制表示中1的个数 所以就枚举n来求什么时候1的个数小于k 那么这里有个优化,不然会超时 因为每次加的目的 ...
- 20130912.Windows下常用命令的使用(不断更新)
Win+R================================ cmd => 命令行 lpksetup => 弹出安装或者卸载Windows显示语言 ipconfig => ...
- centos7下搭建solr服务器
1.Solr的环境 Solr是java开发. 需要安装jdk. 安装环境Linux. 需要安装Tomcat. 1.2. 搭建步骤 第一步:把solr 的压缩包上传到Linux系统 第二步:解压solr ...
- IIC 原理讲解
IIC具体是什么这里我就不细说了,只收集一些关于IIC的原理. IIC总线优点是节约总线数,稳定,快速, 是目前芯片制造上非常 流行的一种总线,大多数单片机已经片内集成了IIC总线接口,无 需用户自己 ...
- react中的跨域问题
react中的跨域问题
- bzoj3626【LNOI2014】LCA
3626: [LNOI2014]LCA Time Limit: 10 Sec Memory Limit: 128 MB Submit: 1266 Solved: 448 [Submit][Stat ...