【开发工具】Linux 服务器 Shell 脚本简单应用(MySql备份等脚本)
上一章介绍完基础【开发工具】Linux 服务器 Shell 脚本简单入门,这一章结合实际运用
对于 do while if else等流程控制基础不再说明,和编程语言大同小异,可以在实际的脚本使用中学习。
.Net Core 项目后台重启脚本
kill -9 $(ps -ef | grep 'dotnet Test.dll --urls=http://\*:8001' | grep -v grep | awk '{print $2}')
cd ./Test && nohup dotnet Test.dll --urls="http://*:8001" &
echo "重启Test.Api执行完成"
awk '{print $2}' : 取结果的第二列字段,即进程的PID号,终止这个进程
> /dev/null 2>&1 : 将日志输出至 /dev/null , 2>&1 把错误输出日志和标准输出日志合并输出
上面这个命令涉及Shell 输入输出重定向
- 标准输入文件(stdin):stdin的文件描述符为0,Unix程序默认从stdin读取数据。
- 标准输出文件(stdout):stdout 的文件描述符为1,Unix程序默认向stdout输出数据。
- 标准错误文件(stderr):stderr的文件描述符为2,Unix程序会向stderr流中写入错误信息。
举个例子: > 输出 字符串 到 文件中, >会覆盖原文件 >>可以在末尾追加
判断奇数的和
新建class6.sh及脚本。
sum=0 for num in 1 2 3 4 5 6 7;do re=${num}%2 if (( ${re} == 1 ));then sum=$[${sum}+${num}] fi done echo ${sum}
bash -n XXX.sh 检查脚本是否有误,一般情况下,Linux没有输出表示正确
bash -n XXX.sh 调试脚本, +标识调试输出
MySql备份脚本
在 /home/shell 目录下, 新建class7.sh 脚本,
解释:进入 base_dir 目录下,登录,备份 data1和data2两个数据库到 dump_xxxxx.sql ,把脚本运行log记录到 /home/bankup/mysql_dump.log
base_dir=/home/bankup/sql_script DATE=$(date +%Y%m%d) time=$(date "+%Y-%m-%d %H:%M:%S") cd $base_dir mysqldump -uroot -p123456 --databases data1 data2> dump$DATE.sql if [ $? -eq 0 ] then echo "成功备份mysql数据库,当前日期为:"$time >> /home/bankup/mysql_dump.log else echo "备份mysql数据库失败:当前日期为:"$time>> /home/backup/mysql_dump.log fi
if [ $? -eq 0 ] 判断是否相等 ,$? 上个命令的退出状态或函数的返回值, -eq 相等。
此备份脚本已写完,但是还不够方便,把他加入定时任务,自动运行。
使用 crontab -e 命令打开定时任务 在打开的文件添加定时任务代码,然后保存。
59 23 * * * /home/shell/class7.sh
每天23点59分备份执行class7.sh备份数据库。
其他功能:Shell文件包含
可以在一个脚本中包含另一个脚本
class8.sh脚本如下
name="司马"
class9.sh脚本如下
source ./class8.sh echo "我的名字:$name"
./class9.sh执行脚本