Ubuntu零基础入门到精通【8.2讲】:Shell 脚本编写与自动化

上期回顾

  在上期内容中,我们化身系统优化小能手,深入探讨了如何让 Ubuntu 系统的性能“焕然一新”。从精简系统启动项和服务,到优化内存和 CPU 使用,再到专为 SSD 的贴心优化,简直让你的电脑跑得比脱缰的野马还快!通过这些微调,系统的响应速度和资源利用率蹭蹭上涨,仿佛给系统装上了涡轮引擎!🏎️💨本期,我们继续前行,深入到 Linux 脚本的魔法世界,教你编写 Shell 脚本自动化任务,把手动操作彻底变成历史。⏳✨

前言

  如果说操作系统是硬件的灵魂,那么 Shell 脚本就是操控这块“灵魂”的魔法咒语。😎Shell 脚本让你可以通过一行行代码实现自动化操作,重复性工作瞬间被它消灭得无影无踪。从清理磁盘空间、备份文件,到自动化部署,Shell 脚本让你不再是机械操作的“苦工”,而是坐在电脑屏幕前的“指挥官”!本期,我们将一起来学学怎么写 Shell 脚本,了解变量、条件语句、循环的基础知识;然后教你编写自动化任务,使用 cronat 来实现定时操作,让你的 Linux 系统“全自动跑起来”。🛠️✨

摘要

  本文将全面介绍如何编写和使用 Shell 脚本来实现自动化任务。我们先讲解 Shell 脚本的基础知识,比如变量、条件语句和循环,然后手把手教你写出一些自动化脚本,解决日常系统维护问题。最后,通过 cronat 配置定时任务,让你的系统在设定的时间自动运行特定操作。💡学完这些,你将在 Ubuntu 系统中编写脚本,让日常操作更便捷、更高效!📈

正文

Shell 脚本编写与自动化
Shell 脚本基础:变量、条件语句、循环 🛠️

Shell 脚本简介

  Shell 脚本其实就是一个命令的“剧本”,每次运行脚本文件,系统都会按顺序执行其中的命令。这个“剧本”通常以 .sh 为后缀名,你可以用 bashsh 命令执行它。比起手动敲命令,脚本的优势就像“群控”一样方便,可以让你一次性搞定多项任务。🤖

  1. 变量

  Shell 脚本中的变量用于存储数据,可能是字符串、数字或者路径。变量赋值不需要声明类型,直接设置值就行,完全是“简单粗暴”型操作。

  • 定义变量

    greeting="Hello, Shell!"
    
  • 使用变量
    在变量名前加上 $ 即可引用变量值。

    echo $greeting  # 输出 "Hello, Shell!"
    
  • 特殊变量:Shell 还提供了一些“特殊符号”变量:

    • $0:表示脚本本身的名字
    • $1$2…:代表传入的第一个、第二个参数,以此类推
    • $#:统计传入参数的个数

这些“神秘符号”在脚本里作用很大,简直就是“小助手”!😄

  1. 条件语句

    条件语句是判断条件的神器,符合条件就执行某些命令,不符合则执行其他操作。最常用的条件语句是 if 语句。

    • 基本的 if 语句

      if [ condition ]; then
          echo "条件成立,执行此操作"
      else
          echo "条件不成立,执行备用操作"
      fi
      
    • 常用比较运算符

      • -eq:等于
      • -ne:不等于
      • -lt:小于
      • -gt:大于

    举个例子,如果想判断数字是否小于 20:

    num=10
    if [ $num -lt 20 ]; then
        echo "num 比 20 小"
    fi
    
  2. 循环

    循环是批量操作的好帮手,可以让你一口气执行一系列重复任务,常用的循环有 forwhile

    • for 循环

      for i in 1 2 3 4 5; do
          echo "当前迭代次数:$i"
      done
      

      这样一个简单的循环就会依次输出 1 到 5。

    • while 循环

      counter=1
      while [ $counter -le 5 ]; do
          echo "当前计数:$counter"
          counter=$((counter+1))
      done
      

      while 循环适合做条件控制的循环操作。

编写脚本实现自动化任务 🤖

编写自动化脚本

  通过编写脚本,你可以让系统帮你自动完成日常任务,比如定时备份、监控资源使用、自动化部署等。只需要执行脚本,就能轻松实现日常“省心运维”。

  1. 自动化备份脚本

  下面是一个简单的备份脚本,它会把指定目录的文件打包备份到目标目录,文件名里还会加上当前日期。这种备份方式特别适合定期保存数据。📦

#!/bin/bash

# 定义源目录和备份目录
src_dir="/home/user/data"
backup_dir="/home/user/backup"

# 获取当前日期
current_date=$(date +"%Y%m%d")

# 创建备份文件名
backup_file="$backup_dir/backup_$current_date.tar.gz"

# 进行备份
tar -czf $backup_file $src_dir

# 显示备份完成信息
echo "备份完成: $backup_file"
  • 执行脚本
    为脚本赋予执行权限,并运行它即可开始备份:
    chmod +x backup.sh
    ./backup.sh
    
  1. 系统监控脚本

  如果你想随时掌握系统状态,可以编写一个脚本监控 CPU 和内存使用情况,将结果保存到日志文件中,方便后续查看。

#!/bin/bash

log_file="/var/log/system_monitor.log"

# 记录当前时间
echo "监控开始于: $(date)" >> $log_file

# 记录 CPU 和内存使用情况
echo "CPU 使用情况:" >> $log_file
top -bn1 | grep "Cpu(s)" >> $log_file

echo "内存使用情况:" >> $log_file
free -m >> $log_file

echo "监控完成于: $(date)" >> $log_file
echo "-------------------------------" >> $log_file
定时任务配置:cron 与 at 的使用 ⏰

配置定时任务

  使用 cronat,你可以安排系统在指定时间自动运行脚本或命令。cron 适合定期任务,而 at 适合一次性任务。

  1. 使用 cron 配置重复任务

    cron 是一个守护进程,用于在后台定期运行任务。它的调度由 crontab 文件管理。

    • 编辑 crontab 文件

      crontab -e
      
    • 添加任务
      通过 crontab 文件定义任务执行的时间和命令:

      # 每天凌晨 2 点运行备份脚本
      0 2 * * * /home/user/backup.sh
      
    • cron 时间格式
      cron 的时间格式由五个字段组成,分别代表:分钟、小时、日期、月份和星期几。

      * * * * * command_to_execute
      
      • 第一个 * 表示每分钟执行一次
      • 第二个 * 表示每小时执行一次,依此类推
  2. 使用 at 配置一次性任务

    at 命令适用于调度一次性任务,比如安排临时任务。

    • 安装 at 工具
      sudo apt-get install at
      
    • 使用 at 调度任务
      指定时间后输入要执行的命令


bash echo "sh /home/user/backup.sh" | at 14:00

  • 查看待执行的 at 任务

    atq
    
  • 删除 at 任务
    atrm 命令删除任务:

    atrm task_number
    
相关知识点拓展 🧩

Shell 脚本调试

  在编写和执行 Shell 脚本时,调试至关重要。可以用 -x 参数来逐行显示脚本执行过程,方便定位错误:

bash -x script.sh

Shell 脚本中的函数

函数是把一组命令封装成一个模块,让脚本结构更清晰,并且可以多次调用,提高代码复用性。👍

my_function() {
    echo "这是一个函数"
}

# 调用函数
my_function

全文总结

  Shell 脚本是 Linux 的“自动化魔法棒”。通过变量、条件语句、循环结构等基本知识,你可以编写功能强大的自动化脚本。再结合 cronat 设置定时任务,系统会像“勤劳的小蜜蜂”一样,帮你自动完成重复任务。Shell 脚本让日常运维变得轻松、高效,减少人为失误。📈

🧧🧧 文末福利,等你来拿!🧧🧧

  在您深入学习 Ubuntu 的过程中,逐渐掌握从基础到高级的各种技能是非常令人振奋的!无论是服务器部署、云平台管理,还是内核优化和网络配置,这些都是提升自己技术水平的重要环节。如果您发现某一章节特别吸引人,或者有想要深入了解的内容,欢迎您订阅此专栏《Ubuntu零基础入门到精通》。通过订阅,您可以第一时间获取到完整的教程和后续更新,确保不会错过任何重要的知识和实用技巧,你值得拥有。

  学习的旅程没有终点,在这套Ubuntu学习指南中,我会带你深入系统,掌握从入门到进阶的各项技能——无论你是初学者,还是想进一步提升Linux技巧的开发者,这里都有你需要的全面知识与实战案例。跟着bug菌学,准没错!!!

✨️ Who am I?

我是bug菌,CSDN | 掘金 | InfoQ | 51CTO | 华为云 | 阿里云 | 腾讯云 等社区博客专家,C站博客之星Top30,华为云2023年度十佳博主,掘金多年度人气作者Top40,51CTO年度博主Top12,掘金/InfoQ/51CTO等社区优质创作者;全网粉丝合计 30w+;硬核微信公众号「猿圈奇妙屋」,欢迎你的加入!免费白嫖最新BAT互联网公司面试真题、4000G PDF电子书籍、简历模板等海量资料,你想要的我都有,关键是你不来拿。

–End

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

bug菌¹

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

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

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

打赏作者

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

抵扣说明:

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

余额充值