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 ----判断目录是否存在,存在的话移动 复制
-
-
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天
-
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
-
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
-
系统管理:通过Shell脚本管理系统配置,如用户管理、权限设置等。
示例:
#!/bin/bash # 添加用户并设置密码 useradd -m username ---m 主目录 echo "password" | passwd --stdin username --把password字符串给passwd命令 stdin标准输入 # 设置用户权限 usermod -aG sudo username ----添加到指定的组和组列表
-
日志分析:编写Shell脚本解析日志文件,提取关键信息或进行统计分析。
示例:
#!/bin/bash # 解析日志文件,提取关键信息 grep "error" /var/log/syslog | awk '{print $4, $5, $6, $7}' > error_log.txt --提取全部用0
-
脚本编写:编写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 为当前系统时间。