在运维工作中,免不了编写一些脚本交由计划任务(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 打印
mail 邮件
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的更多相关文章

  1. Linux下Shell脚本运行程序不输出日志到终端

    使用: 脚本路径/脚本名 >/dev/>& 说明: 可以简单的理解/dev/null是Linux下的回收站 >默认是把标准输出重定向 2>&1是把出错输出也定向 ...

  2. IDEA部署项目,并结合Shell脚本运行Java程序

    一.概述 在实际开发中,我们写好的代码,往往打成war包或jar包,通过winscp或其他软件将其上传至服务器,然而这样非常大的一个弊端就是不利于开发,为什么这么说呢?假如我们刚刚将springboo ...

  3. 基于sparksql调用shell脚本运行SQL

    [Author]: kwu 基于sparksql调用shell脚本运行SQL,sparksql提供了类似hive中的 -e  , -f ,-i的选项 1.定时调用脚本 #!/bin/sh # uplo ...

  4. 利用shell脚本实现nginx 的logs日志分割

    Nginx 是一个非常轻量的 Web 服务器,体积小.性能高.速度快等诸多优点.但不足的是也存在缺点,比如其产生的访问日志文件一直就是一个,不会自动地进行切割,如果访问量很大的话,将 导致日志文件容量 ...

  5. SHELL脚本运行的几种方法以及区别

    #1 给脚本加上执行权限chmod u+x a.sh, 而后就可以直接用全路径来执行脚本了,比如当前文件夹下用./a.sh,如果如果脚本所在目录在PATH环境变量之中, 则直接用a.sh即可(这和运行 ...

  6. Ubuntu下shell脚本运行异常:bash和dash的区别

    Ubuntu下我用bash到语法写了一个shell脚本(准确的说是把书上的脚本敲进电脑),在ubuntu下,用sh test.sh来运行,但是出现了意料之外到结果,比如echo -e "\n ...

  7. shell脚本运行java程序jar

    在UBuntu上部署项目的时候,我们往往通过一段shell来启动程序,甚至是通过crontab定时任务来定时的调用java程序,但是很奇怪的一个问题就是,比如我写了一个如下的shell脚本: #!/b ...

  8. buntu下shell脚本运行异常:bash和…

    转载于:http://www.51testing.com/?uid-225738-action-viewspace-itemid-208702 我用bash到语法写了一个shell脚本(准确的说是把书 ...

  9. Shell脚本运行报错Bad substitution解决办法

    环境Ubuntu18.4.02 脚本运行报错 # sh test.sh test.sh: 2: test.sh: Bad substitution 原因 从 ubuntu 6.10 开始,ubuntu ...

随机推荐

  1. 20121124.Nodejs异步式I/O与事件式编程

    异步: 你请人吃饭,准备一起去的.结果那人刚好有事,让你先去点菜,你去点好菜,他忙完就来了,这就是异步的优势(不耽误事!)同步: 就是,你必须等那个人忙完了,才一起去(浪费时间) 理解来源于群友&qu ...

  2. js实现点击复制网页内容(基于clipboard.js)

    浏览网页过程中会遇到点击复制链接地址的情况,下面就介绍一种实现方法,该方法是基于clipboard.js: 官网地址:https://clipboardjs.com/: clipboard.js使用比 ...

  3. 【Codeforces Round #499 (Div. 2) E】Border

    [链接] 我是链接,点我呀:) [题意] 给你n个数字,每个数字可以无限用,每种方案可以组成一个和,问你%k的结果有多少种不同的结果. [题解] 相当于给你一个方程 \(x_1*a_1+x_2*a_2 ...

  4. FastDFS 实现图片上传_01

    一.jar 包 jar包下载:https://pan.baidu.com/s/1nwkAHU5 密码:tlv6 或者 下载工程,安装到 maven 本地仓库 工程下载:https://pan.baid ...

  5. java中的接口中的方法

    题目如下:(多选题)请选择以下接口定义正确的方法() A:public static void main (String[] args); B:private void test(); C:publi ...

  6. NYIST 1030 Yougth's Game[Ⅲ]

    Yougth's Game[Ⅲ]时间限制:3000 ms | 内存限制:65535 KB难度:4 描述有一个长度为n的整数序列,A和B轮流取数,A先取,每次可以从左端或者右端取一个数,所有数都被取完时 ...

  7. Nutch2 WebPage写入数据库的过程分析

    版本: Nutch 2.2.1 本文通过InjectJob来追踪webpage的定义.创建.传递.序列化.写入数据库的整个过程.从源码中摘录了重要的代码行,并标明其所在文件名.行号. 1. 定义 sc ...

  8. 关于C++的一些函数的使用方法

    关于C++的一些函数的使用方法: http://www.shouce.ren/api/c/index.html

  9. openfiler作为文件server,实现ISCSI共享存储

    还是不能发图.这是第二篇.图文在这个地址:http://download.csdn.net/detail/weimingyu945/8089893 1      登陆 首先登陆openfiler的we ...

  10. webserver的作用!

    常见的webserver:Apache和Nginx(linux平台) IIS(window平台) 非常多小公司小项目眼下不一定使用了webserver,由于流量下,单台应用server能够支撑. 实际 ...