在Linux系统中,我们经常需要创建脚本,然后将脚本上传到生产环境的服务器,部署脚本并进行授权,然后创建作业. 如果公司部署了Ansible自动化运维工具话,那么可以批量部署处理.如果没有Ansible这类自动化运维工具的话,我们可以通过脚本打包安装脚本,避免一台台服务器手工处理. 下面通过一个例子简单介绍一下.
打包脚本
上传脚本mysql_log_maint_monitor/install.sh/package.sh和配置文件db_monitor.json到指定目录.使用脚本package.sh进行打包
脚本package.sh如下所示:- #!/bin/bash
- #########################################################################################
- # #
- # 此脚本为打包脚本,生成可分发脚本的安装包 #
- # #
- # #######################################################################################
- # #
- # ScriptName : package.sh #
- # Author : 潇湘隐者 #
- # CerateDate : 2026-08-15 #
- # Blogs : www.cnblogs.com/kerrycode #
- # Email : kerry2008code@qq.com #
- #***************************************************************************************#
- # 参数配置 #
- #---------------------------------------------------------------------------------------#
- # 注意,此脚本可以作为通用的打包脚本使用,只需修改下面变量即可 #
- #---------------------------------------------------------------------------------------#
- # PACKAGE_NAME 打包文件名称 #
- # VERSION 脚本版本 #
- # SCRIPT_NAME 脚本名 #
- # INSTALL_SCRIPT 安装脚本名(install.sh) #
- # Version Modified Date Description #
- #***************************************************************************************#
- # V.1.0 2025-08-15 创建此脚本 #
- #########################################################################################
- # 定义包名和版本
- PACKAGE_NAME="mysql_log_maint_monitor"
- VERSION="2.1"
- OUTPUT_FILE="${PACKAGE_NAME}-${VERSION}.tar.gz"
- SCRIPT_NAME="mysql_log_maint_monitor"
- CONF_FILE="db_monitor.json"
- INS_SCRIPT_NAME="install.sh"
- readonly SUCCESS=0
- readonly FAILURE=1
- # 检查必要文件是否存在(可以定制/改写)
- if [ ! -f ${SCRIPT_NAME} ] || [ ! -f ${INS_SCRIPT_NAME} ] || [ ! -f ${CONF_FILE} ] ; then
- echo "warning:缺少必要的文件,请确保${SCRIPT_NAME},${INS_SCRIPT_NAME}, ${CONF_FILE} 这些文件存在!"
- exit $FAILURE
- fi
- # 创建临时目录
- TMP_DIR=$(mktemp -d)
- mkdir -p $TMP_DIR/$PACKAGE_NAME
- # 复制文件到临时目录
- cp ${SCRIPT_NAME} $TMP_DIR/$PACKAGE_NAME/
- cp ${INS_SCRIPT_NAME} $TMP_DIR/$PACKAGE_NAME/
- cp ${CONF_FILE} $TMP_DIR/$PACKAGE_NAME/
- # 打包
- echo "正在创建安装包: $OUTPUT_FILE"
- if tar -czf $OUTPUT_FILE -C $TMP_DIR $PACKAGE_NAME ;
- then
- echo "安装包创建成功: $OUTPUT_FILE"
- else
- echo "安装报创建失败,请检查确认"
- fi
- # 清理临时文件
- rm -rf $TMP_DIR
- # 显示结果
- if [ -f "$OUTPUT_FILE" ]; then
- echo "文件大小: $(du -h $OUTPUT_FILE | awk '{print $1}')"
- else
- echo "安装包创建失败"
- exit $FAILURE
- fi
复制代码 检查脚本package.sh中变量正确后(预先处理好,一般不会有问题),执行脚本package.sh打包文件,如下所示:- $ sh package.sh
- 正在创建安装包: mysql_log_maint_monitor-2.1.tar.gz
- 安装包创建成功: mysql_log_maint_monitor-2.1.tar.gz
- 文件大小: 40K
复制代码 自动部署脚本
将文件mysql_log_maint_monitor-2.1.tar.gz上传后,按下面步骤执行,就会将脚本和配置文件拷贝指定目录,并授予相关权限,然后配置生成crontab作业.具体如下所示:- [mysql@dbtest04 install]$ pwd
- /data/install
- [mysql@dbtest04 install]$ ls
- mysql_log_maint_monitor-2.1.tar.gz
- [mysql@dbtest04 install]$ pwd
- /data/install
- [mysql@dbtest04 install]$ tar -xzvf mysql_log_maint_monitor-2.1.tar.gz
- mysql_log_maint_monitor/
- mysql_log_maint_monitor/mysql_log_maint_monitor
- mysql_log_maint_monitor/install.sh
- mysql_log_maint_monitor/db_monitor.json
- [mysql@dbtest04 install]$ cd mysql_log_maint_monitor
- [mysql@dbtest04 mysql_log_maint_monitor]$ sh install.sh
- 正在部署脚本...
- 设置执行权限...
- /home/mysql/db_monitor/scripts/db_monitor.json脚本复制成功
- 配置定时任务...
- ------------------------------------------------------
- 安装成功!
- 脚本路径: /home/mysql/db_monitor/scripts/mysql_log_maint_monitor
- 定时任务: 每5分钟执行一次系统监控
- */5 * * * * /home/mysql/db_monitor/scripts/mysql_log_maint_monitor
- ------------------------------------------------------
- [mysql@dbtest04 mysql_log_maint_monitor]$ crontab -l
- ###################################MySQL error log##############################################
- */5 * * * * /home/mysql/db_monitor/scripts/mysql_log_maint_monitor
- ################################################################################################
- [mysql@dbtest04 mysql_log_maint_monitor]$
复制代码
其中脚本install.sh的定义如下所示:注意事项:
1.此脚本如果重复执行的话, 有一个小bug,如下所示,作业的注释多了一行,暂时还未想到好的解决方法。不加注释能规避这个问题。但是又不想这样操作。- [mysql@dbtest04 mysql_log_maint_monitor]$ sh install.sh
- 正在部署脚本...
- 设置执行权限...
- /home/mysql/db_monitor/scripts/db_monitor.json脚本复制成功
- 配置定时任务...
- ------------------------------------------------------
- 安装成功!
- 脚本路径: /home/mysql/db_monitor/scripts/mysql_log_maint_monitor
- 定时任务: 每5分钟执行一次系统监控
- */5 * * * * /home/mysql/db_monitor/scripts/mysql_log_maint_monitor
- ------------------------------------------------------
- [mysql@dbtest04 mysql_log_maint_monitor]$ crontab -l
- ###################################MySQL error log##############################################
- ################################################################################################
- ###################################MySQL error log##############################################
- */5 * * * * /home/mysql/db_monitor/scripts/mysql_log_maint_monitor
- ################################################################################################
复制代码 扫描上面二维码关注我如果你真心觉得文章写得不错,而且对你有所帮助,那就不妨帮忙“推荐"一下,您的“推荐”和”打赏“将是我最大的写作动力!本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接.
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |