#!/bin/bash
source /etc/profile
#mysql执行客户端
mysql_c='mysql -h 127.0.0.1 -u root -e'
#需要切割或者分析的表名
table=""
#统计哪天数据(默认分析上一天数据)
statDate=`date -d '-1 day' +'%F'`
##切割表、当指定表文件>1GB时执行
function split_table()
{
if [ -z "$table" ];then
echo "table can't be empty"
return 0
fi
tfile="/data/mysql/db_log/$table.ibd"
if [ ! -f "$tfile" ];then
echo "split_table `date +'%F %H:%M:%S'` db file not found $tfile"
return 0
fi
fsize=`ls -l $tfile 2>/dev/null | awk -F ' ' '{print $5}'`
((compGB=1024))#*1024*1024*1))
if [[ -z "$fsize" || $fsize -lt $compGB ]];then
echo "split_table `date +'%F %H:%M:%S'` $tfile < 1GB 不需要切分"
return 1;
fi
bak_table="$table"_`date +'%y%m%d%H'`
tmp_table="$table"_bak;
sql="create table if not exists db_log.$tmp_table like db_log.$table;
alter table db_log.$table rename db_log.$bak_table;
alter table db_log.$tmp_table rename db_log.$table;
"
echo "split_table `date +'%F %H:%M:%S'` start fileSize[$fsize B],rename[$table to $bak_table]"
$mysql_c "$sql" #执行切表
echo "split_table `date +'%F %H:%M:%S'` end fileSize[$fsize B],rename[$table to $bak_table]"
}
case "$1" in
splitTable)
#指定表切割
if [ -n "$2" ];then
table="$2"
split_table
return
fi
table="tb_stats_log"
split_table
;;
*)
"Using :(splitTable)"
;;
esac
exit 0
分享到:
相关推荐
在给定的脚本中,使用bash shell编写了一个简单的日志切割脚本,它通过命令行工具如`mv`(移动文件)和`date`(处理日期)来实现日志的重命名和时间戳的添加。 4. **USR1信号**:在Nginx中,向主进程发送USR1信号...
在计算机领域,切割文本文件通常指的是将一个大文件分割成若干个小文件,这在处理大型日志文件、数据备份或数据分析时非常有用。在Shell中,我们可以利用`cut`命令来实现这个功能。 `cut`命令的基本语法是: ```...
多循环备份则按照数据库-表的方式,每个表单独备份到一个文件,这样有利于管理和恢复。脚本中使用了mysqldump命令进行备份,指定主机、用户、密码、备份目录和数据库名。 4. Nginx 访问日志按天切割:为了便于日志...
# 这是一个简单的Shell脚本 a="Hello World" echo "A is: $a" ``` 保存文件为`hello.sh`,并使用`chmod +x hello.sh`设置执行权限,然后通过`./hello.sh`运行脚本。 ##### 注释 - 在Shell脚本中,以`#`开头的行被...
本文档收集了 9 个实用 Shell 脚本,涵盖 Dos 攻击防范、Linux 系统发送告警、MySQL 数据库备份、Nginx 访问访问日志切割等多个方面。 1. Dos 攻击防范(自动屏蔽攻击 IP) 该脚本用于自动屏蔽攻击 IP,保护服务器...
nginx按天进行日志切割脚本,同样适合其它很多服务日志的切割,压缩包包含shell切割脚本和使用说明,该脚本适合nginx同时也适合其他类似服务的日志切割,只要简单修改shell脚本即可,灵活多变,实用。
如果你不想使用`logrotate`,也可以编写一个简单的shell脚本来完成日志切割。以下是一个基本的示例: ```bash #!/bin/bash # 获取当前日期 DATE=$(date +%Y%m%d) # 备份并压缩旧的日志文件 mv /var/log/tomcat/...
`log4sh`,一个专为Shell脚本设计的日志模块,提供了强大的日志记录功能,具有自定义格式、自定义级别等特性,使得在Shell环境中进行日志管理变得简单高效。 1. **日志级别** `log4sh`支持多种日志级别,包括`...
- **图书管理系统概述**:该脚本为一个简单的图书管理系统,运行在Linux环境下的Ubuntu 8.10操作系统上。主要功能包括编辑图书信息(添加、更新状态、显示和删除)、生成报告等。 #### 二、Shell命令详解 - **#!/...
使用 `export` 命令可以将一个变量导出到环境变量中。 例如: ```sh export VAR=value ``` ##### 2.5 常用 Shell 命令 在 Shell 脚本中,经常需要用到各种命令来实现特定功能。以下是一些常用的命令及其用法: - ...
以下是一个简单的 shell 脚本示例: ```bash #!/bin/bash DATE=$(date +%d/%b/%Y:%H:%M) LOG_FILE=/usr/local/nginx/logs/demo2.access.log ABNORMAL_IP=$(tail -n5000 $LOG_FILE |grep $DATE |awk '{a[$1]++}END{...
这个简单的Shell脚本解决方案虽然不能做到精确控制日志文件的大小(切割点可能在100~102MB之间),但对于大多数场景来说已经足够有效。如果需要更精细的控制,可以考虑使用专业的日志管理工具,如Logrotate,它可以...
4、编写程序实现一个简单的员工档案管理系统,具备简单的员工资料增加、删除和查询等功能,并采用二进制文件保存员工的资料信息。 5、为了便于文件的管理和传输,某些时候需要将特别大的文件切割为多个指定长度小的...
# 这是一个注释,用于解释下面的命令 echo "Hello, World!" # 这也是注释,但仅限于这一行 ``` **1.1.3 变量** - **定义**: Shell脚本中的变量不需要预先声明,可以直接使用。 - **赋值与使用**: 使用等号 `=` ...
在完成了《现代操作系统》课程的学习后,为了更深入地理解操作系统的内部机制,尤其是进程管理以及进程间通信等内容,选择了一个具体的项目——编写一个简单的命令解释器来模拟Shell的功能。该项目不仅有助于巩固已...
下面是一个简单的Shell脚本示例,用于展示如何使用Shell脚本来完成一些基本的任务: ```bash #!/bin/bash # 设置变量 a="hello world" # 使用变量 echo "Message: $a" # 条件判断 if [ "$a" == "hello world" ]; ...
Shell脚本经典案例,sh脚本语法参考,封装参考,SH脚本文件案例,BASH脚本文件参考,Linux脚本文件参考,sh脚本文件写法参考,SH...shell 脚本 (.sh) 编写及执行参考代码,简单有效,案例,参数传递,经典实例大全。
尽管现代Linux系统提供了丰富的图形界面工具,但是Shell仍然是一个非常强大且灵活的工具,特别是在处理批量任务和系统管理方面。 - **灵活性与功能**: Shell不仅集成了大量的命令,还可以通过编写脚本来实现复杂的...
分享一个入门级可控多线程shell脚本方案 下面张戈博客再分享另一种更容易理解的入门级可控多线程shell脚本方案:任务切割、各个击破。 先来 1 段场景描述: 某日,在鹅厂接到了这个任务,需要在Linux服务器中,对几...