Shell脚本常见应用

Shell脚本在工作中如何使用的;

  • 自动化任务:使用Shell脚本编写定时任务,如数据备份、日志清理等。

  • 系统管理:通过Shell脚本管理系统配置,如用户管理、权限设置等。

  • 日志分析:编写Shell脚本解析日志文件,提取关键信息或进行统计分析。

  • 脚本编排:编写Shell脚本实现多个命令的自动执行和流程控制。

  • 示例:

    • 自动化任务

    0 2 * * * /path/to/backup_script.sh   ---凌晨二点执行shell脚本
    # 系统管理
    useradd  newuser    ----创建新用户 (-m -s /bin/bash ---m代表家目录 s代表默认登录)
    # 日志分析
    grep "error" /var/log/syslog | awk '{print $4, $5, $6, $7}' > error_log.txt  
    ​
    --(查找错误日志在日志文件中,awk代表具体,$4$5$6$7代表多少行,一个尖括号代表覆盖,二个尖括号代表追加,覆盖就是覆盖掉原有内容,追加是在内容后边)
    ​
    # 脚本内容
    if [ -d "/path/to/dir" ]; then
        cp /path/to/file1 /path/to/dir
        mv /path/to/file2 /path/to/dir
    fi
    ----判断目录是否存在,存在的话移动 复制

  1. Shell脚本:MySQL数据备份。

    示例:

    #!/bin/bash
    ​
    # 定义备份目录和日期
    backup_dir="/path/to/backup"
    backup_date=$(date +"%Y-%m-%d")
    ​
    # 创建备份目录
    mkdir -p "$backup_dir/$backup_date"
    ​
    # 备份数据库
    mysqldump -u username -p password database > "$backup_dir/$backup_date/database.sql"
    ​
    # 压缩备份文件
    tar -czf "$backup_dir/$backup_date.tar.gz" "$backup_dir/$backup_date"
    ​
    # 删除旧的备份文件
    find "$backup_dir" -type d -mtime +7 -exec rm -rf {} \;
    --type d  代表目录类型
    --mtiem +7  代表最近7天 

  2. shell脚本:Oracle--expdp-数据备份

    # 设置备份目录
    backup_dir="/path/to/backup"
    ​
    # 设置备份文件名
    backup_file="$backup_dir/db_backup_$(date +%Y%m%d_%H%M%S).dmp" 
    ----时间戳命名
    ​
    # 设置Oracle用户名和密码
    username="your_username"
    password="your_password"
    ​
    # 执行备份命令
    expdp $username/$password@your_sid dumpfile=$backup_file directory=DATA_PUMP_DIR logfile=$backup_dir/backup.log
    --directory代表导出的默认数据目录,
    ​
    # 检查备份是否成功
    if [ $? -eq 0 ]; then
        echo "Database backup successful. Backup file: $backup_file"
    else
        echo "Database backup failed."
    fi

  3. shell脚本:Oracle--rman--数据备份

    #!/bin/bash
    ​
    # 设置备份文件存储路径
    backup_dir="/backup"
    ​
    # 设置备份文件名
    backup_file="$backup_dir/$(date +'%Y%m%d_%H%M%S').bkp"
    ​
    # 设置日志文件路径
    log_file="$backup_dir/backup.log"
    ​
    # 执行 RMAN 备份命令
    rman target / <<EOF
    run {
        allocate channel c1 device type disk format '$backup_file';
        --数据备份通道,指定备份设备的类型 disk磁盘 格式
        backup database plus archivelog;    ---全库
    }
    exit;
    EOF
    ---target /  代表默认数据库
                rman target sys/password@mydbhost:1521/mydbname 非默认
    ​
    # 检查备份是否成功,并记录日志
    if [ $? -eq 0 ]; then
        echo "$(date +'%Y-%m-%d %H:%M:%S') - Backup successful" >> "$log_file"
    else
        echo "$(date +'%Y-%m-%d %H:%M:%S') - Backup failed" >> "$log_file"
    fi
    ​

  4. 系统管理:通过Shell脚本管理系统配置,如用户管理、权限设置等。

    示例:

    #!/bin/bash
    ​
    # 添加用户并设置密码
    useradd -m username    ---m 主目录
    echo "password" | passwd --stdin username
    --把password字符串给passwd命令  stdin标准输入
    ​
    # 设置用户权限
    usermod -aG sudo username     ----添加到指定的组和组列表 

  5. 日志分析:编写Shell脚本解析日志文件,提取关键信息或进行统计分析。

    示例:

    #!/bin/bash
    ​
    # 解析日志文件,提取关键信息
    grep "error" /var/log/syslog | awk '{print $4, $5, $6, $7}' > error_log.txt
    --提取全部用0

  6. 脚本编写:编写Shell脚本实现多个命令的自动执行和流程控制。

    示例:

    #!/bin/bash
    ​
    # 定义变量
    name="John"
    age=25
    ​
    # 打印变量值
    echo "Name: $name"
    echo "Age: $age"
    ​
    # 判断年龄是否大于等于18岁
    if [ "$age" -ge 18 ]; then
        echo "$name is an adult."
    else
        echo "$name is a minor."
    fi

7.Shell脚本:举例日志清理7天

#!/bin/bash
​
# 定义日志目录和保留天数
log_dir="/var/log"
days_to_keep=7
​
# 获取当前日期
current_date=$(date +%Y-%m-%d)
​
# 删除早于指定天数的日志文件
find "$log_dir" -type f -mtime +$days_to_keep -exec rm -f {} \;
---f普通文件 
​
# 记录清理日志
echo "Log files older than $days_to_keep days have been deleted on $current_date" >> "$log_dir/cleanup_log.txt"
​
-- 追加到日志文件 cleanup_log.txt 中,"Log files older than $days_to_keep days have been deleted on $current_date"(超过7天的日志已被删除在当前时间): 这是要输出的消息文本,其中 $days_to_keep 为7 和 $current_date 为当前系统时间。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

.房东的猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值