目录:
上期回顾
在上期内容中,我们化身系统优化小能手,深入探讨了如何让 Ubuntu 系统的性能“焕然一新”。从精简系统启动项和服务,到优化内存和 CPU 使用,再到专为 SSD 的贴心优化,简直让你的电脑跑得比脱缰的野马还快!通过这些微调,系统的响应速度和资源利用率蹭蹭上涨,仿佛给系统装上了涡轮引擎!🏎️💨本期,我们继续前行,深入到 Linux 脚本的魔法世界,教你编写 Shell 脚本自动化任务,把手动操作彻底变成历史。⏳✨
前言
如果说操作系统是硬件的灵魂,那么 Shell 脚本就是操控这块“灵魂”的魔法咒语。😎Shell 脚本让你可以通过一行行代码实现自动化操作,重复性工作瞬间被它消灭得无影无踪。从清理磁盘空间、备份文件,到自动化部署,Shell 脚本让你不再是机械操作的“苦工”,而是坐在电脑屏幕前的“指挥官”!本期,我们将一起来学学怎么写 Shell 脚本,了解变量、条件语句、循环的基础知识;然后教你编写自动化任务,使用 cron
和 at
来实现定时操作,让你的 Linux 系统“全自动跑起来”。🛠️✨
摘要
本文将全面介绍如何编写和使用 Shell 脚本来实现自动化任务。我们先讲解 Shell 脚本的基础知识,比如变量、条件语句和循环,然后手把手教你写出一些自动化脚本,解决日常系统维护问题。最后,通过 cron
和 at
配置定时任务,让你的系统在设定的时间自动运行特定操作。💡学完这些,你将在 Ubuntu 系统中编写脚本,让日常操作更便捷、更高效!📈
正文
Shell 脚本编写与自动化
Shell 脚本基础:变量、条件语句、循环 🛠️
Shell 脚本简介
Shell 脚本其实就是一个命令的“剧本”,每次运行脚本文件,系统都会按顺序执行其中的命令。这个“剧本”通常以 .sh
为后缀名,你可以用 bash
或 sh
命令执行它。比起手动敲命令,脚本的优势就像“群控”一样方便,可以让你一次性搞定多项任务。🤖
- 变量
Shell 脚本中的变量用于存储数据,可能是字符串、数字或者路径。变量赋值不需要声明类型,直接设置值就行,完全是“简单粗暴”型操作。
-
定义变量:
greeting="Hello, Shell!"
-
使用变量:
在变量名前加上$
即可引用变量值。echo $greeting # 输出 "Hello, Shell!"
-
特殊变量:Shell 还提供了一些“特殊符号”变量:
$0
:表示脚本本身的名字$1
、$2
…:代表传入的第一个、第二个参数,以此类推$#
:统计传入参数的个数
这些“神秘符号”在脚本里作用很大,简直就是“小助手”!😄
-
条件语句
条件语句是判断条件的神器,符合条件就执行某些命令,不符合则执行其他操作。最常用的条件语句是
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
-
-
循环
循环是批量操作的好帮手,可以让你一口气执行一系列重复任务,常用的循环有
for
和while
。-
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
循环适合做条件控制的循环操作。
-
编写脚本实现自动化任务 🤖
编写自动化脚本
通过编写脚本,你可以让系统帮你自动完成日常任务,比如定时备份、监控资源使用、自动化部署等。只需要执行脚本,就能轻松实现日常“省心运维”。
- 自动化备份脚本
下面是一个简单的备份脚本,它会把指定目录的文件打包备份到目标目录,文件名里还会加上当前日期。这种备份方式特别适合定期保存数据。📦
#!/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
- 系统监控脚本
如果你想随时掌握系统状态,可以编写一个脚本监控 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 的使用 ⏰
配置定时任务
使用 cron
和 at
,你可以安排系统在指定时间自动运行脚本或命令。cron
适合定期任务,而 at
适合一次性任务。
-
使用
cron
配置重复任务cron
是一个守护进程,用于在后台定期运行任务。它的调度由crontab
文件管理。-
编辑
crontab
文件:crontab -e
-
添加任务:
通过crontab
文件定义任务执行的时间和命令:# 每天凌晨 2 点运行备份脚本 0 2 * * * /home/user/backup.sh
-
cron
时间格式:
cron
的时间格式由五个字段组成,分别代表:分钟、小时、日期、月份和星期几。* * * * * command_to_execute
- 第一个
*
表示每分钟执行一次 - 第二个
*
表示每小时执行一次,依此类推
- 第一个
-
-
使用
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 的“自动化魔法棒”。通过变量、条件语句、循环结构等基本知识,你可以编写功能强大的自动化脚本。再结合 cron
和 at
设置定时任务,系统会像“勤劳的小蜜蜂”一样,帮你自动完成重复任务。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