大家好
出个血本, 把毕生功力浓缩进一个运维脚本中
每天定时执行脚本发送邮件到邮箱
配合报警机制, 基本不需要登陆服务器就可以了如指掌
好了, 废话不多说, 直接贴脚本, 里面 @是注解, 别急, 最后会告诉大家如何删除
vi xunjian.sh
@指定使用的 sh
#!/bin/bash
@指定变量, yd 缩写 yesterday, 哈昨天
yd=`date -d "1 day ago" +%Y%m%d`
@输出标题, 我这边写的是 IP
echo 'Subject:11.2.1.1'
@输出分隔符, 下面很多, 为了美观, 最后会贴图, 大家可以看看
echo '############################################################################################################'
@输出自己能看懂的意思就可以了, 推荐英文以及汉语拼音, 因为中文偶尔很走鸡
echo 'ip'
@linux 命令, 目的查看 IP 及网卡流量
ifconfig
@输出空行, 也是为了美观, 后面一样
- echo ''echo''
- echo '####################################################################################'
- echo 'crontab'
@输出计划任务, 目的万一有人更改, 及时可以发现
- crontab -l
- echo ''echo''
- echo '####################################################################################'
- echo 'cpu'
@输出 CPU 信息, 直接用 TOP 不行的
- top -b -n 1 |head -n 15
- echo ''echo''
- echo '####################################################################################'
- echo 'cpu-top10'
@CPU 占用前十的进程
- ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head
- echo ''echo''
- echo '####################################################################################'
- echo 'mem'
@内存状态, 看看剩余, 虽然我也有报警装置, 但每天看看放心
- free -m
- echo ''echo''
- echo '####################################################################################'
- echo 'mem-top10'
@内存占用前十进程
- ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head
- echo ''echo''
- echo '####################################################################################'
- echo 'fdisk'
@硬盘状态, 剩余量
- df -h
- echo ''echo''
- echo '###################################
- ```#########################################################################'echo'service'
@目前开启的都有哪些服务
- netstat -tunpl
- echo ''echo''
- echo '####################################################################################'
- echo 'time'
@时间看看, 是不是准确, 这里输出时间是你 crontab 中设定的时间为准
- date
- echo ''echo''
- echo '####################################################################################'
- echo 'ping'
@试试网络如何, 虽然百度也有挂的时候, 但总体稳定
ping -c 5 www.baidu.com
- echo ''echo''
- echo '####################################################################################'
- echo '80port'
@输出 80 端口, 各状态的数量, 比如 wait, 正在连接什么的
- netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a,S[a]}'
- echo ''echo''
- echo '############################################################################################################'
- echo 'ydIPshu'
@这里引用最开始的 YD 变量, 查看昨天一天所有访问日志中来访的 IP 数量, 叫 PV 还是什么的, 其实也不准确, 尤其国内都是大局域网
grep -v HEAD /opt/logs/*${yd}.log | awk '{print $1}' |sort | uniq -c |wc -l
echo ''echo''
echo '############################################################################################################'
echo 'message'
@查看系统日志, 有报错没有
tail -n 10 /var/log/messages
echo ''echo''
echo '############################################################################################################'
echo 'nginx-error'
@查看 nginx 错误日志, 一般都是一堆 404, 大牛黑客搜后台整的
tail -n 10 /opt/logs/error.log
echo ''echo''
echo '############################################################################################################'
echo 'php-error'
@查看 PHP 错误日志
tail -n 5 /var/log/php-fpm/error.log
echo ''echo''
echo '############################################################################################################'
echo 'inotify-log size'
@查看同步软件的日志文件大小, 有设置每天清空, 要不太大, 装 unsion+inotify 来同步上传目录, 双机热备
ls -l /opt/inotify.log
echo ''echo''
echo '############################################################################################################'
echo 'inotify-tailf-10'
@查看同步的情况, 从这能看出软件是否正常运行
tail -n 10 /opt/inotify.log
echo ''echo''
echo '############################################################################################################'
echo 'last'
@查看服务器登录用户, 最近时间五个, 别让人登录了都不知道
last -5
echo ''echo''
echo '############################################################################################################'
echo 'log-ip-top10'
@查看某网站, 昨天一天的来访 IP 前十, 目的是如果某 IP 数量巨大, 你就要查查看是不是攻击或者什么的
awk '{print $1}' /opt/logs/sssss.access.${yd}.log| sort | uniq -c | sort -n -k 1 -r | head -n 10
echo ''echo''
echo '############################################################################################################'
echo 'log-200-top10'
@查看昨天一天, 各状态码前十数量, 前十足够了, 200 404 403 啥的
awk '{print $9}' /opt/logs/sssss.access.${yd}.log | sort | uniq -c | sort -rn
echo ''echo''
echo '############################################################################################################'
echo 'back'
@查看昨天备份网站成功了吗, 我都是直接 tar 全备
ls -alh /opt/back/*${yd}*
echo ''echo''
echo '############################################################################################################'
echo 'log-back'
@查看昨天各种日志的备份
ls -alh /opt/logs/*${yd}*
find /opt/logs/*.log -mtime -1
echo ''echo''
echo '############################################################################################################'
echo 'mail'
@查看 mail 邮件, 系统有什么报错, 也会向 ROOT 用户发邮件, 要时时关注
ls -al /var/spool/mail/root
echo ''echo''
echo '############################################################################################################'
echo 'mysql-error'
@查看数据库错误日志
tail -n 20 /usr/local/mysql/logs/mysqld.log
echo ''echo''
echo '############################################################################################################'
echo 'mysql-status'
@数据库状态, 我是用来看当前数据库连接数
mysql -uroot -pmima -e 'status'
echo ''echo''
echo '############################################################################################################'
echo 'databases'
@查看所有数据库名称
mysql -uroot -pmima -e 'show databases'
echo ''echo''
echo '############################################################################################################'
echo 'mysql-max-connection'
@查看数据库启动到现在最大的连接数峰值, 嘿, 非常逻辑清楚的解释
mysql -uroot -pmima -e "show global status like'Max_used_connections';"
echo ''echo''
echo '############################################################################################################'
echo 'mysql-master-slave'
@我有装 mysql 主主双机, 这里查看双机同步状态
mysql -uroot -pmima -e 'show slave status\G;'
echo ''echo''
echo '############################################################################################################'
echo 'mysql-slowlog'
@查看数据库慢日志, 我设置 1S
tail -n 20 /usr/local/mysql/logs/mysqlslow.log
echo ''echo''
echo '############################################################################################################'
echo 'clamd'
@查看杀毒软件今天有没有查到病毒文件, 这软件怎么装, 在我之前的博文里有
cat /opt/clamav/bingdu.log
echo ''echo''
echo '############################################################################################################'
echo 'users'
@查看新增用户, 我之前有用一款国产软件, 服了, 一升级就给我新增个用户, 最逗的是空密码, 咋想的开发
tail -n 5 /etc/passwd
echo ''echo''
echo '############################################################################################################'
好啦, 大家也看完了,:wq 保存
这些注解肯定不能留啊
炫个技
sed -i '/@/d' xunjian.sh
执行这个命令, 你会发现注解都没有了
crontab -e
添加定时任务, 把我的贴出来大家看看, 8 点准时发送, 一上班就吃着早点看看
10 8 * * */opt/xunjian/xunjian.sh> /opt/xunjian/xunjian 2>&1;sendmail 111111111@qq.com < /opt/xunjian/xunjian
当然, 这里说了, 你要先安装好 sendmail, 我之前的博文中也有推荐看看
好了, 谢谢大家观看, 欢迎下方讨论, 我叫 TAB
来源: http://blog.51cto.com/kevinzhang91/2122058