当前位置:首页>Linux>Linux系统基础14:Shell 脚本的核心价值

Linux系统基础14:Shell 脚本的核心价值

  • 2026-10-11 06:30:15
Linux系统基础14:Shell 脚本的核心价值

Shell 脚本的核心价值

Shell 脚本的本质是「Linux 命令的批量封装器」,核心价值是把有固定流程、需要重复执行的操作自动化。只要是在 Linux 终端里能敲命令完成的事,几乎都可以写成 Shell 脚本一键执行,既提升效率,又避免手动敲命令的失误。

下面按「从入门到进阶、贴合日常与嵌入式场景」的顺序,梳理最常用的应用场景,每个场景都配简化可运行的示例,方便你理解和上手。


一、入门级:系统日常运维与环境管理

这是新手最先接触、最容易上手的场景,核心是把「每次要敲好几条命令的固定操作」合成一个脚本,一键跑完。

1. 系统一键更新与垃圾清理

场景说明

每次更新系统都要敲 apt update、apt upgrade、apt autoremove、apt clean 好几条命令,写成脚本一条命令就能完成全套更新清理。

示例脚本 sys_update.sh

#!/bin/bash# 一键更新系统并清理冗余包echo "=== 开始更新软件源 ==="sudo apt updateecho "=== 开始升级软件 ==="sudo apt upgrade -yecho "=== 清理无用依赖和缓存 ==="sudo apt autoremove -ysudo apt cleanecho "✅ 系统更新完成!"

为什么用 Shell

都是原生系统命令,直接串起来就行,不用装任何额外工具,零依赖。

2. 批量用户 / 权限管理

场景说明

需要创建十几个测试用户、统一加用户组、设置初始密码,手动一个个敲 useradd 效率极低还容易错,用循环脚本几秒钟搞定。

示例脚本:批量创建 10 个测试用户

#!/bin/bash# 批量创建 user01 ~ user10 共10个用户,初始密码都是 123456for i in $(seq -w 1 10)do    username="user${i}"    # 创建用户并自动创建家目录    useradd -m -s /bin/bash "$username"    # 设置初始密码    echo "123456" | passwd --stdin "$username"    echo "已创建用户:(date +%Y%m%d_%H%M%S)   # 时间戳命名# 1. 创建备份目录mkdir -p "{backup_dest}/backup_backup_src"# 3. 删除超过保留天数的旧备份find "keep_days -deleteecho "✅ 备份完成:backup_log_dir" -type f -name "*.log" -mtime +30 -deleteecho "✅ 已清理 {board_user}@{app_path}/"echo "=== 重启开发板上的程序 ==="ssh "{board_ip}" "killall myapp; cd app_name" > /dev/null    then        echo "$(date): 进程 $app_name 不存在,正在重启..."        # 启动程序        "(date): 重启完成"    fi    # 等待10秒再检查    sleep 10done

使用方式

开机后台启动这个脚本,程序崩溃 10 秒内就会被自动拉起来,设备稳定性大幅提升。

3. 设备状态一键巡检

场景说明

定期检查设备的 CPU 负载、内存使用率、磁盘剩余空间、关键进程状态,异常时记录日志或者报警,不用手动一条条命令查。

示例:设备健康检查脚本

#!/bin/bashecho "===== 设备健康巡检 $(date) ====="echo "1. 运行时长:$(uptime | awk '{print $3,$4}')"echo "2. CPU负载:2}')"echo "3. 内存剩余:7}')"echo "4. 根分区剩余:4}')"echo "5. 关键进程:"pgrep -l myapp sshdecho "=================================="

执行后一眼就能看到设备的所有核心状态,排查问题非常方便。

4. 系统开机初始化脚本

场景说明

嵌入式设备开机后,需要自动做很多初始化工作:加载驱动模块、挂载数据分区、设置 IP、启动应用程序,这些都是用 Shell 脚本实现的。

  • 传统方式:写在 /etc/rc.local 里
  • 现代方式:写在 systemd 的 service 服务里,ExecStart 指向一个 Shell 脚本

四、批量处理:文件与文本自动化

1. 批量文件重命名 / 格式转换

场景说明

几百个文件要统一加前缀、改后缀、替换文件名里的字符,手动改要花几小时,脚本几秒钟搞定。

示例:批量把 .txt 后缀改成 .md

#!/bin/bashfor file in *.txtdo    # 替换后缀    new_name="file" "(df / | tail -1 | awk '{print usage" -gt 85 ]then    echo "警告:根分区使用率已达 ${usage}%,请及时清理!"    # 这里可以加发送邮件/钉钉告警的命令fi

2. 服务健康检查

定期访问网站接口、测试端口连通性,服务异常就自动重启、切换备用节点,实现基础的故障自愈。


六、哪些场景不适合用 Shell 脚本

Shell 脚本擅长「胶水式的命令串联、简单流程控制」,但不是万能的,以下场景更适合用 Python/Go/Java 等高级语言:

  1. 复杂的业务逻辑
    :多层嵌套判断、复杂数据结构处理,Shell 写起来维护成本极高。
  2. 大量数值计算、浮点运算
    :Shell 默认只支持整数运算,浮点计算非常麻烦。
  3. 图形界面程序、网络并发服务
    :Shell 不适合做高并发、长连接的服务程序。
  4. 跨平台需求
    :Shell 强依赖 Linux 环境,Windows 原生不支持,跨平台脚本优先选 Python。

最新文章

随机文章