一、简介
本文将总结一些常用的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的结果放到里面;

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

Linux之常用Shell脚本总结的更多相关文章

  1. Linux常用Shell脚本珍藏【转载】

    我们在运维中,尤其是linux运维,都知道脚本的重要性,脚本会让我们的 运维事半功倍,所以学会写脚本是我们每个linux运维必须学会的一门功课,这里收藏linux运维常用的脚本.如何学好脚本,最关键的 ...

  2. 常用shell脚本命令

    常用shell脚本命令 1.显示包含文字aaa的下一行的内容: sed -n '/aaa/{n;p;}' filename 2.删除当前行与下一行的内容: sed -i '/aaa/{N;d;}' f ...

  3. 如何在java程序中调用linux命令或者shell脚本

    转自:http://blog.sina.com.cn/s/blog_6433391301019bpn.html 在java程序中如何调用linux的命令?如何调用shell脚本呢? 这里不得不提到ja ...

  4. Linux生产服务器Shell脚本分享

    Linux生产服务器Shell脚本分享 2012-6-6 86市场网 linux 作为一名Linux/unix系统管理员,我经常遇到人问这个问题:shell能做什么?PHP这么强大,为什么不用PHP来 ...

  5. Linux下添加shell脚本使得nginx日志每天定时切割压缩

    Linux下添加shell脚本使得nginx日志每天定时切割压缩一 简介 对于nginx的日志文件,特别是access日志,如果我们不做任何处理的话,最后这个文件将会变得非常庞大 这时,无论是出现异常 ...

  6. linux下实现shell脚本自动连接mongodb数据库并创建索引

    在linux下创建shell脚本

  7. 8个DBA最常用的监控Oracle数据库的常用shell脚本

    本文介绍了8个常用的监控数据shell脚本.首先回顾了一些DBA常用的Unix命令,以及解释了如何通过Unix Cron来定时执行DBA脚本.网上也有好多类似的文章,但基本上都不能正常运行,花点时间重 ...

  8. 2019.11.13课堂实验之用Linux下的shell脚本完成两文本交替输出

    有两个文本如下,实际中并不知道两文本各有多少行: 文本1.txt aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ccccccccccccccccccccccccccc ...

  9. Java执行cmd命令、bat脚本、linux命令,shell脚本等

    1.Windows下执行cmd命令 如复制 D:\tmp\my.txt 到D:\tmp\my_by_only_cmd.txt 现文件如图示: 执行代码: private static void run ...

随机推荐

  1. 【198】Synergy - 鼠标键盘共享软件

    参考:Synergy X64 v1.7.4 官方最新版 参考:Synergy安装方法 功能介绍: 可以将配置局域网的电脑实现同一个鼠标键盘控制两台电脑,效果类似一台电脑使用双屏的效果,键盘会根据鼠标的 ...

  2. SpringBoot启动的时候不去校验数据库连接配置是否正确

    spring boot在启动的时候只会检查你是否配置了数据库连接, 而不会检测配置的是否正确 这样会出现的问题是: 只有在你使用数据库的时候才知道配置出错, 我们希望是在程序启动的时候就进行检查, 如 ...

  3. VMware ESXI虚拟机挂载移动硬盘

    Windows server2008 R2 1.“编辑虚拟机设置”,点击“添加” 2.点击添加“USB控制器”: 3.添加完“USB控制器”以后,再点击添加“USB设备”: 完成即可:如果系统里面不显 ...

  4. 蒟蒻ACMer回忆录 · 一段弱校ACM的奋斗史

    三年半的ACM生涯终于迎来了终点,退役之时,感慨万分,故写此文以纪念逝去的时光,那些为ACM拼搏的日子,那段弱校ACM的奋斗史. 三年半的ACM生涯,窝见证了CUMT从打铁到铜牌的突破,又见证了从铜牌 ...

  5. 3.bool布尔值int,str的转化,字符串的常用方法,字符串format,is判断(字符串的数字),for循环

    1.bool 布尔值 bool 布尔值 -- 用于条件使用 True 真 False 假 True 真 False 假 print(bool(-10)) # 0 是 False 非0的都是True p ...

  6. SequoiaDB、SequoiaSQL、Cloudera Manager4.8.0、Cloudera CDH4.5 详细安装教程

    1安装SequoaiDB集群 1.1配置信任关系 以root用户执行下面的操作 1 执行命令 ssh-keygen 然后一直回车确定即可 2 每台机器都打开id_rsa.pub文件 vi ~/.ssh ...

  7. Lightoj 1231 - Coin Change (I) (裸裸的多重背包)

    题目链接: Lightoj  1231 - Coin Change (I) 题目描述: 就是有n种硬币,每种硬币有两个属性(价值,数目).问用给定的硬币组成K面值,有多少种方案? 解题思路: 赤果果的 ...

  8. 条形码问题 dp+求某个序列在某种排列中的序号的方法

    题目 条形码是一种由亮条(Light Bar)和暗条(Dark Bar)交替出现且以暗条为起头的符号,每条都占有若干个单位宽.图33-1给出了一个含有4个条的条形码,它延续了1+2+3+1=7单位的宽 ...

  9. sendRedirect和forward区别

    参考来源:http://www.educity.cn/develop/158970.html 12.6.4  sendRedirect()和forward()方法的区别 HttpServletResp ...

  10. UIBarButtonItem系统默认风格形状

    typedef NS_ENUM(NSInteger, UIBarButtonSystemItem) { UIBarButtonSystemItemDone, UIBarButtonSystemItem ...