apache日志每天进行轮转:

vim /usr/local/apache2/conf/extar/httpd-vhosts.conf
...
ErrorLog "| /usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/error_log-%Y%m%d 86400"
CustomLog "| /usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/access_log-%Y%m%d 86400" common
...

说明:
1. rotatelogs程序是apache自带的一个日志切割工具。 -l参数表示使用本地系统时间为标准切割,而不是GMT时区时间。
2. /usr/local/apache2/logs/access_log-%Y%m%d 86400
用来指定日志文件的位置和名称,其中86400用来指定分割时间默认单位为s,也就是24小时;

log-server上搭建rsync:
[root@log-server ~]# cat /etc/rsyncd.conf
[web1]
path = /web1/logs
uid = root
gid = root
read only = false

[web2]
path = /web2/logs
uid = root
gid = root
read only = false

echo rsync --daemon >> /etc/rc.local

web服务器上定义清理脚本

#!/bin/bash
#clean log
clean_log(){
remote_log_server=10.1.1.2
server=$1
log_dir=/usr/local/apache2/logs
log_tmp_dir=/tmp/log
host=`ifconfig eth0|sed -n '2p'|awk -F'[ :]+' '{print $4}'`

[ ! -d $log_tmp_dir ] && mkdir -p $log_tmp_dir

cd $log_dir
find ./ -daystart -mtime +3 -exec tar -uf $log_tmp_dir/`echo $host`_$(date +%F).tar {} \;
find ./ -daystart -mtime +3 -delete

cd $log_tmp_dir
rsync -a ./ $remote_log_server::$server && find ./ -daystart -mtime +1 -delete
}

jumper-server:

#!/bin/bash
#jumper-server
#菜单打印
trap '' 1 2 3
menu1(){
cat <<-END
请选择对web1的操作类型:
1. clean_apache_log
2. reload_apache_service
3. test_apache_service
4. remote login
END
}
menu2(){
cat <<-END
欢迎使用Jumper-server,请选择你要操作的主机:
1. DB1-Master
2. DB2-Slave
3. Web1
4. Web2
5. exit
END
}

push_pubkey(){
ip=$1
# 判断公钥文件是否存在,没有则生成公钥
[ ! -f ~/.ssh/id_rsa.pub ] && ssh-keygen -P "" -f ~/.ssh/id_rsa &>/dev/null
# 安装expect程序,与交互式程序对话(自动应答)
sudo rpm -q expect &>/dev/null
test $? -ne 0 && sudo yum -y install expect
#将跳板机上yunwei用户的公钥推送的指定服务器上
/usr/bin/expect<<-EOF
spawn ssh-copy-id -i root@$ip
expect {
"yes/no" { send "yes\r";exp_continue }
"password:" { send "111111\r" }
}
expect eof
EOF

}
while true
do
menu2
#让用户选择相应的操作
read -p "请输入你要操作的主机:" host
case $host in
1)
ssh root@10.1.1.2
;;
2)
ssh root@10.1.1.3
;;
3)
clear
menu1
read -p "请输入你的操作类型:" types
case $types in
1)
ssh root@10.1.1.1 clean_log web1
test $? -eq 0 && echo "日志清理完毕..."
;;
2)
service apache reload
;;
3)
wget http://10.1.1.1 &>/dev/null
test $? -eq 0 && echo "该web服务运行正常..." || echo "该web服务无法访问,请检查..."
;;
4)
ssh root@10.1.1.1
;;
"")
:
;;
esac
;;
5)
exit
;;
*)
clear
echo "输入错误,请重新输入..."
;;
esac
done

shell_clean_log的更多相关文章

随机推荐

  1. part11 Vue项目接口联调//真机测试

    何为项目接口联调? 前端代码编译好了  后端接口写好了 我们就需要去掉前端模拟数据干掉 用后端提供的数据.进行前后端的一个调试 如何联调? config目录下面 index.js 文件 dev 中pr ...

  2. Java 语言特性【一】——JUC(Java 并发工具包)

    引言 JUC即java.util.concurrent,是java提供的用于多线程处理的工具类库.重点关注 ConcurrentXXX.AtomicXXX.Executor.Caller&&a ...

  3. 自己组装一台1U服务器

    视频资料链接 自己组装一台1U服务器 执行思路: 1.评估访问了,根据需求确定服务器要求 2.根据要求选择硬件:冗余.稳定等 3.搜索主流服务器参数进行对比,及对比价格 4.咨询IDC机房价格 DIY ...

  4. centos 7 内存压测测试--memtester工具

    1.下载memteste工具 官方:http://pyropus.ca/software/memtester/ wget http://pyropus.ca/software/memtester/ol ...

  5. C/C++源程序到可执行程序的过程

    源程序.cpp  预处理得到 预处理文件.i   编译得到 汇编文件.S    汇编得到 目标文件.o     链接得到 可执行文件 例子:main.cpp  fun.cpp fun.h #inclu ...

  6. C++ spdlog日志管理

    [1]spdlog简介 spdlog是一个开源的.快速的.仅有头文件的基于C++11实现的一款C++专用日志管理库. [2]源码下载 下载地址:https://github.com/gabime/sp ...

  7. 模拟jenkins通过shell给ansible传入变量

    jenkins.sh #!/bin/bash name1='robin h h li' age1='11' declare -A dic dic=( [name1]="${name1}&qu ...

  8. Linux(CENTOS7) Nginx安装

    1.下载nginx  在disk目录下,输入以下命令进行下载: wget http://nginx.org/download/nginx-1.12.2.tar.gz 2.解压nginx 在disk目录 ...

  9. android测量的三种模式

    测量模式有三种引用官方的解释如下 UNSPECIFIED The parent has not imposed any constraint on the child. It can be whate ...

  10. poj2778 矩阵乘法+ac自动机

    题:http://poj.org/problem?id=2778 题意:给定m个模式串,问长度为n的字符串不包含这些模式串的有几种可能 分析:因为n很大,所以考虑矩阵ksm来解决,构造一个矩阵res[ ...