• Linux之常用Shell脚本总结


    一、简介
    本文将总结一些常用的shell脚本,方便以后工作中使用。

    二、shell脚本
    【a】定期备份mysql数据库,需结合cronb定时任务调度实现。

    #!/bin/bash
    #首先声明一些自定义变量

    #数据库备份路径
    DB_BAK_PATH=/data/db
    #当前时间
    CURRENTTIME=$(date +%Y%m%d_%H%M%S)
    #备份数据库名称
    DB_NAME=test_db_bak
    #用户名
    DB_USERNAME=root
    #密码
    DB_PASSWORD=0905
    #主机名称
    DB_HOSTNAME=localhost

    echo "=======数据库备份开始【备份路径: $DB_BAK_PATH/$CURRENTTIME.tar.gz 】========"


    #创建备份的路径,如果目录不存在,则先创建备份目录
    if [ ! -d "$DB_BAK_PATH/$CURRENTTIME" ]; then
    echo "备份目录不存在,准备创建备份目录"
    #创建备份目录
    mkdir -p "$DB_BAK_PATH/$CURRENTTIME"
    else
    echo "备份目录已存在"
    fi

    #另一种比较简便的写法(前面的命令为true,才执行 &&后面的命令)
    #[ ! -d "$DB_BAK_PATH/$CURRENTTIME" ] && mkdir -p "$DB_BAK_PATH/$CURRENTTIME"

    #使用mysqldump备份mysql数据库,并进行gzip压缩
    mysqldump -u${DB_USERNAME} -p${DB_PASSWORD} --host=$DB_HOSTNAME $DB_NAME | gzip > $DB_BAK_PATH/$CURRENTTIME/$CURRENTTIME.sql.gz

    #tar压缩
    cd $DB_BAK_PATH
    tar -zcvf $CURRENTTIME.tar.gz $CURRENTTIME

    #删除临时目录
    rm -rf $DB_BAK_PATH/$CURRENTTIME

    #删除一个月之前的数据库备份文件
    find $DB_BAK_PATH -mtime +30 -name "*.tar.gz" -exec rm -rf {} ;

    #数据库备份完成
    echo "========数据库备份成功【备份路径: $DB_BAK_PATH/$CURRENTTIME.tar.gz】==========="
    【b】批量创建Linux用户,并且属于同一个用户组wsh,要求用户名和密码一致。

    #!/bin/bash
    #批量创建Linux用户(user1 - user5),并且属于同一个用户组wsh,要求用户名和密码一致

    for I in $(seq 1 5)
    do
    #useradd 用户名 -g 用户组名
    useradd user$I -g wsh
    #修改密码
    echo user$I | passwd user$I --stdin
    done


    【c】将/test目录下大于10k的文件删除(常用于垃圾回收)

    #!/bin/bash
    #将/test中的大于10k的文件删除
    for tmp in $(ls /test)
    do
    if [ -f $tmp ]; then
    if [ $(ls -l $tmp|awk '{print $5}') -gt 10000 ]; then
    #删除文件
    rm -rf $tmp
    fi
    fi
    done


    【d】按时批量清除N天前文件(需要结合cronb定时任务调度实现)

    #!/bin/bash

    #定时清理30天之前的/data/目录下的后缀为.txt的文:wq!i件
    find /data/ -mtime +30 -name "*.txt" -exec rm -rf {} ;


    #/data:准备要进行清理的目录; 
    #-mtime:标准语句写法+30:查找30天前的文件;
    #".txt"表示查找扩展名为.txt的所有文件;
    #-exec:固定写法 ;
    #rm -rf:强制删除文件,包括目录 ;
    #{}  :将find的结果放到里面;
     

     
    ---------------------

  • 相关阅读:
    MySQL 安装和配置
    其它 Google Chrome 已停止工作
    VUE 父组件和子组件相互传值 组件之间的数据传递
    SpringBlade 源码 个性化修改 添加字典时 自动填充字典值
    MyBatis-Plus SpringBlade 生成代码时 啥内容都没有 只有目录
    Oracle IIS部署报错
    pycharm连接sqlite后打开db文件不显示表的问题
    Hbase集群搭建以及启动(单点启动,群起)
    Flume的put和take事务
    稀疏数组学习
  • 原文地址:https://www.cnblogs.com/ly570/p/11082403.html
Copyright © 2020-2023  润新知