通过Shell开发企业级专业服务启动脚本案例(MySQL)
2017-07-07 10:26
776 查看
老男孩教育Linux高端运维班Shell课后必会考试题:
企业Shell面试题10:开发企业级MySQL启动脚本
说明:
MySQL启动命令为:
要求:用函数,case语句、if语句等实现。
解答:此题的技巧适合绝大多数启动脚本,例如:rsync,nginx等,仅以MySQL为例介绍思路。
简单、易用、高效、专业
https://item.jd.com/12117874.html
不妨先定个小目标,精通Shell编程!如果精通了,则15K起,可联系老男孩给你推荐企业。
有精力的朋友可以写下rsync或nginx启动脚本模仿下,可以评论在下面。
企业Shell面试题10:开发企业级MySQL启动脚本
说明:
MySQL启动命令为:
/bin/sh mysqld_safe --pid-file=$mysqld_pid_file_path 2>&1 >/dev/null &停止命令逻辑脚本为:
mysqld_pid=`cat "$mysqld_pid_file_path"` if (kill -0 $mysqld_pid 2>/dev/null) then kill $mysqld_pid sleep 2 fi请完成MySQL启动脚本的编写,并实现可以使用chkconfig配置开机自启动。
要求:用函数,case语句、if语句等实现。
解答:此题的技巧适合绝大多数启动脚本,例如:rsync,nginx等,仅以MySQL为例介绍思路。
简单、易用、高效、专业
#!/bin/bash # chkconfig: 2345 64 36 # description: MySQL startup # Author:oldboy # Blog:http://oldboy.blog.51cto.com # Time:2017-07-07 09:24:34 # Name:mysqld # Version:V1.0 # Description:This is a test script. [ -f /etc/init.d/functions ] && source /etc/init.d/functions bindir="/application/mysql/bin" datadir="/application/mysql/data" mysqld_pid_file_path="/application/mysql/`hostname`.pid" PATH="/sbin:/usr/sbin:/bin:/usr/bin:$basedir/bin" #此步对开机启动及定时启动及其关键。 export PATH return_value=0 # Lock directory. lockdir='/var/lock/subsys' lock_file_path="$lockdir/mysql" log_success_msg(){ echo " SUCCESS! $@" # 注意函数的缩进,下同,也是专业的表现,可放到functions里。 } log_failure_msg(){ echo " ERROR! $@" } # Start Func start(){ # Start daemon echo "Starting MySQL" if test -x $bindir/mysqld_safe # 启动文件是否可执行。 then $bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" >/dev/null & return_value=$? # 是否处理好返回值是区别脚本是否专业规范的关键。 sleep 2 # Make lock for CentOS if test -w "$lockdir" # 锁目录是否可写。 then touch "$lock_file_path" # 创建锁文件。 fi exit $return_value else log_failure_msg "Couldn't find MySQL server ($bindir/mysqld_safe)" fi } # Stop Func stop(){ if test -s "$mysqld_pid_file_path" # 是否PID文件存在并大小大于0。 then mysqld_pid=`cat "$mysqld_pid_file_path"` if (kill -0 $mysqld_pid 2>/dev/null) # 检查PID对应的进程是否存在。 then echo "Shutting down MySQL" kill $mysqld_pid # 不能带-9,否则后果自负。 return_value=$? sleep 2 else log_failure_msg "MySQL server process #$mysqld_pid is not running!" rm -f "$mysqld_pid_file_path" fi # Delete lock for Oldboy's CentOS if test -f "$lock_file_path" then rm -f "$lock_file_path" fi exit $return_value else log_failure_msg "MySQL server PID file could not be found!" fi } case "$1" in start) start ;; stop) stop ;; restart) if $0 stop; then $0 start else log_failure_msg "Failed to stop running server, so refusing to try to start." exit 1 fi ;; *) echo "Usage: $0 {start|stop|restart}" exit 1 esac exit $return_value #是否处理好返回值是区别脚本是否专业规范的关键。更多Shell知识可参考老男孩的新书《跟老男孩学Linux运维:Shell编程实战》,各大书店有售
https://item.jd.com/12117874.html
不妨先定个小目标,精通Shell编程!如果精通了,则15K起,可联系老男孩给你推荐企业。
有精力的朋友可以写下rsync或nginx启动脚本模仿下,可以评论在下面。
相关文章推荐
- 企业级通过shell脚本开发MySQL启动脚本 案例
- 企业Shell面试题15:开发Rsync服务启动脚本案例
- 通过shell脚本检测MySQL服务信息
- 老鸟带你开发专业规范的MySQL启动脚本
- 利用shell开发rsync服务启动脚本
- Shell脚本应用之服务启动脚本
- shell脚本开发的6点基本规范和习惯---摘取自“老男孩linux运维培训”(自己通过视频整理)
- 解决mysql安装时无法通过start service启动服务
- 通过DOS窗口启动和关闭MySQL服务
- 通过脚本案例学习shell(二) --- 通过线性显示/etc/passwd内容了解while read用法 推荐
- SHELL脚本控制服务启动
- suse linux原创案例08:配置脚本或服务随linux系统启动
- windows下mysql启动停止服务示例脚本
- 开发启动rsync服务的脚本
- 一个简单的mysql服务检测启动脚本
- 通过脚本案例学习shell(五) 通过创建DNS脚本一步一步教你将一个普通脚本规范到一个生产环境脚本 推荐
- Shell简单全备mysql脚本案例
- 使用交互式shell脚本实现对DNS服务的管理以及启动
- windows下制作mysql服务启动、关闭脚本
- Shell简单全备mysql脚本案例