使用shell
脚本,抓取系统日志中错误信息,并使用sendemail
发送至管理员信箱。
介绍
我希望在ubuntu服务器上部署的nginx + uwsgi
应用,运行出现错误时我能尽快知道并解决。应用运行中,运行日志保存在/tmp/ypk.log
文件中,若出新错误,日志中会写入如DataError: invalid input syntax for type date: "3年"……
类似记录。我的思路是定时扫描这个日志文件,如果出现新的Error
关键字,就将相关的信息发至我的邮箱。这样的任务,非Shell
脚本语言不能实现。
Shell脚本语言介绍
Shell脚本,又称Shell命令稿、程序化脚本,是一种电脑程序与文本文件,内容由一连串的shell命令组成,经由Unix Shell直译其内容后运作。被当成是一种脚本语言来设计,其运作方式与直译语言相当,由Unix shell扮演命令行解释器的角色,在读取shell脚本之后,依序运行其中的shell命令,之后输出结果。利用shell脚本可以进行系统管理,文件操作等。在Unix及所有的类Unix系统中,如Linux、FreeBSD等操作系统,都存在shell脚本。依照Unix shell的各种不同类型,shell脚本也有各种不同方言。在DOS、OS/2、Microsoft Windows中的批处理文件,跟shell脚本有类似的功能。
脚本中用到的命令
grep
, Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。sendemail
, 邮件发送工具,可以看这篇文章如何在ubuntu上使用sendemail发送邮件。comm
, 逐行比较两个文件的内容。
脚本的程序流程
脚本
1 |
|
设为定时运行
编辑ubuntu crontab
定时脚本:1
crontab -e
设为每小时的30分执行一次:1
30 * * * * /home/user/send_ypk_err.sh
运行结果
OK。
本文参考了这篇文章。