Shell篇之编写MySQL启动脚本

embedded/2024/9/19 13:15:45/ 标签: mysql

Shell篇之编写MySQL启动脚本

1. 脚本内容

vim mysql_ctl.sh
#!/bin/bashmysql_port=3306
mysql_username="root"
mysql_password="molinker"
mysql_conf="/opt/lanmp/mysql/etc/my.cnf"
mysql_sock="/opt/lanmp/mysql/var/mysql.sock"function_start_mysql(){printf "Starting MySQL ...\n"/bin/sh /opt/lanmp/mysql/bin/mysqld_safe --defaults-file=${mysql_conf} 2>&1 > /dev/null &
}function_status_mysql(){
mysql_stat=0
mysql_tmpa=`ps -ef | grep mysql | grep -v root | awk '{print $2}'`
name="`hostname`.pid"
mysql_tmpb=`cat /opt/lanmp/mysql/var/$name`
if [ `lsof -i:20036 | wc -l` -gt 0 ]; thenif [ `ps -ef | grep mysql | grep -v grep | wc -l` -gt 0 ]; thenif [ $mysql_tmpa -eq $mysql_tmpb ]; thenmysql_stat=1fifi
fiif [ $mysql_stat -eq 1 ]; thenecho "mysql(pid $mysql_tmpb) is runing!"
elif [ $mysql_stat -eq 0 ]; thenecho "mysql is not runing!"
fi
}function_stop_mysql(){printf "Stopping MySQL ...\n"/opt/lanmp/mysql/bin/mysqladmin --port=${mysql_port} --user=${mysql_username} --password=${mysql_password} --socket=${mysql_sock} shutdown
}function_restart_mysql(){printf "Restarting MySQL ...\n"function_stop_mysqlsleep 1function_start_mysql
}function_kill_mysql(){ps -ef | grep "mysqld_safe" | grep -v grep | awk '{print "kill -9 " $2}' | /bin/shps -ef | grep "mysqld" | grep -v grep | awk '{print "kill -9 " $2}' | /bin/sh
}if [ "$1" = "start" ]; thenfunction_start_mysql
elif [ "$1" = "stop" ]; thenfunction_stop_mysql
elif [ "$1" = "status" ]; thenfunction_status_mysql
elif [ "$1" = "restart" ]; thenfunction_restart_mysql
elif [ "$1" = "kill" ]; thenfunction_kill_mysql
elseprintf "Usage: mysql {start|stop|restart|kill|status}\n"
fi

注意事项

mysql_conf:为MySQL对应配置文件路径
mysql_sock:为MySQL对应socket文件

2. 赋权

chmod +x mysql_ctl.sh

3. 命令

./mysql_ctl start
./mysql_ctl status
./mysql_ctl restart

http://www.ppmy.cn/embedded/113809.html

相关文章

贪心算法day29|134. 加油站(理解有难度)、135. 分发糖果、860. 柠檬水找零、406. 根据身高重建队列

贪心算法day29|134. 加油站(理解有难度)、135. 分发糖果、860. 柠檬水找零、406. 根据身高重建队列 134. 加油站暴力非暴力 135. 分发糖果860. 柠檬水找零1.哈希表2.直接法 406. 根据身高重建队列 134. 加油站 在一条环路上有 n 个加油站,其…

vscode配置c/c++环境

在 Visual Studio Code (VSCode) 中配置 C/C 开发环境需要几个步骤。以下是详细的步骤指南,包括安装必要的扩展、配置编译器和调试器等。 安装 VSCode 首先,确保你已经安装了 Visual Studio Code。可以从 VSCode 官网 下载并安装。 安装 C/C 扩展 打开 …

【重学 MySQL】三十三、流程控制函数

【重学 MySQL】三十三、流程控制函数 IF函数IFNULL函数CASE函数总结 在MySQL中,流程控制函数是用于在SQL查询、存储过程或函数中根据特定条件执行不同流程的重要工具。这些函数可以帮助我们实现复杂的逻辑判断和数据转换。 IF函数 IF函数是MySQL中最基本的流程控制…

django orm查询优化

DJANGO ORM查询优化 Django ORM 提供了一些优化查询的工具,可以减少数据库查询次数和提高查询性能。常见的优化手段包括使用 select_related、prefetch_related、defer 和 only 等。 1. select_related 优化外键查询 select_related 用于一对一和一对多关系的优化…

函数题 6-10 阶乘计算升级版【PAT】

文章目录 题目函数接口定义裁判测试程序样例输入样例输出样例 题解解题思路完整代码AC代码 编程练习题目集目录 题目 要求实现一个打印非负整数阶乘的函数。 函数接口定义 void Print_Factorial ( const int N ); 其中N是用户传入的参数,其值不超过 1000 1000 10…

跨平台集成:在 AI、微服务和 Azure 云之间实现无缝工作流

跨平台集成在现代 IT 架构中的重要性 随着数字化转型的不断加速,对集成各种技术平台的需求也在快速增长。在当今的数字世界中,组织在复杂的环境中执行运营,其中多种技术需要无缝协作。环境的复杂性可能取决于业务的性质和组织提供的服务。具体到 IT 架构,跨平台集成对于使…

C++入门基础知识75(高级)——【关于C++ Web 编程】

成长路上不孤单😊😊😊😊😊😊 【14后😊///C爱好者😊///持续分享所学😊///如有需要欢迎收藏转发///😊】 今日分享关于C Web 编程的相关内容! 关于…

笔记:简介Drawing是什么,都有哪些,如何使用

一、目的:Drawing简介 在 WPF 中,Drawing 是一个抽象基类,用于表示可绘制的对象。Drawing 类及其派生类提供了一种轻量级的方式来描述图形、图像和视频等内容。Drawing 对象通常用于不需要用户交互的静态内容,例如背景图像、图标和…

java生成随机数的四种方法

方法一:Math.random() Math.random() 方法返回的是一个介于 0.0(包含)和 1.0(不包含)之间的随机浮点数。 1、生成0.0到1.0之间的浮点数:double f Math.random(); 2、生成0.0到50.0之间的双精度浮点数:double rando…

如何训练机器学习力场

机器学习力场(MLFF)的训练主要依赖于通过量子力学计算生成的高质量训练数据集,并利用不同的机器学习算法来拟合分子系统中的势能面(Potential Energy Surface, PES)和原子间作用力。这种训练过程包括数据准备、特征提取…

数据结构:堆的算法

目录 一堆的向上调整算法二堆的向下调整算法三堆的应用:堆排序四TOPK问题 一堆的向上调整算法 我们在堆中插入一个数据一般实在堆的最后插入然后可以一步一步与上层结点(父结点进行比较),继而进行交换,完成二叉树的结构&#xff0…

【CS110L】Rust语言 Lecture3-4 笔记

文章目录 第三讲 所有权:移动与借用&例1例2例3 错误处理(开头)为什么空指针如此危险,我们能做什么以应对?— 引出Optionis_none()函数unwrap_or()函数常见用法 第四讲 代码实践:链表Box节点和链表的定义节点和链表的构造函数判…

SQL Server数据库简单的事务日志备份恢复

模拟数据库备份恢复过程 1.基础操作 1.创建TestDB数据库,并添加数据 USE [master] GO CREATE DATABASE TestDB CONTAINMENT NONE ON PRIMARY ( NAME NTestDB, FILENAME ND:\TestDB.mdf , SIZE 8192KB , MAXSIZE UNLIMITED, FILEGROWTH 65536KB ) LOG ON ( …

项目管理 | 一文读懂什么是敏捷开发管理

在快速变化的商业环境中,项目管理方式也在不断演进,其中敏捷开发管理因其高效、灵活和适应性强的特点,逐渐成为众多企业和团队的首选。本文将详细解析敏捷开发管理的定义、具体内容及其核心角色,帮助读者全面理解这一先进的项目管…

【数据结构】排序算法---快速排序

文章目录 1. 定义2. 算法步骤3. 动图演示4. 性质5. 递归版本代码实现5.1 hoare版本5.2 挖坑法5.3 lomuto前后指针 6. 优化7. 非递归版本代码实现结语 1. 定义 快速排序是由东尼霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要 O ( n l o g n ) Ο(nlogn) …

C++——判断year是不是闰年。

没注释的源代码 #include <iostream> using namespace std; void Y(int y); int main() { int year; cout<<"请输入一个年份:"; cin>>year; Y(year); return 0; } void Y(int y) { if(((y%40)&&(y%100!0))||(y%…

人工智能开发实战matplotlib库应用基础

内容导读 matplotlib简介绘制直方图绘制撒点图 一、matplotlib简介 matplotlib是一个Python 2D绘图库&#xff0c;它以多种硬拷贝格式和跨平台的交互式环境生成高质量的图形。 matplotlib 尝试使容易的事情变得更容易&#xff0c;使困难的事情变得可能。 我们只需几行代码…

前端vue中如何给reactive赋值

const deviceDatareactive({}) const getDeviceDetail (list)>{ if(list.length > 0){ for(let item of list){ if(item.id param.id){ Object.assign(deviceData,item) } } } }

CodeMeter 8.20AxProtector 11.50版本更新

CodeMeter是一款强大的软件保护和许可管理工具&#xff0c;此次8.20版本更新引入了多个重要的新功能和优化&#xff0c;进一步提升了不同平台上的兼容性与使用体验。本次更新扩展了对CmCloudContainer的支持&#xff0c;优化了Python、Rust等语言的加密能力&#xff0c;并修复了…

HarmonyOS开发实战( Beta5.0)自定义装饰器实践规范

介绍 本示例介绍通过自定义装饰器在自定义组件中自动添加inspector (布局回调)方法并进行调用。 效果图预览 不涉及 使用说明 在自定义组件上添加自定义装饰器CallbackObserver&#xff0c;并根据参数设置对应的方法名和需要绑定的组件的ID。编译工程&#xff0c;可以根据…