Linux自动化脚本入门:从零编写并定时执行你的第一个脚本

开始前的准备工作

动手写Linux自动化脚本之前,你需要确认三件事:一台运行的Linux服务器(可以是云服务器或本地虚拟机)、SSH远程连接工具(如Xshell、FinalShell或系统自带终端)、以及基本的文本编辑能力
大部分Linux发行版都内置了Bash解释器和cron服务,无需额外安装。
如果你用的是最小化安装的系统,可以先用which bash看看Bash是否存在,用which crontab确认cron是否可用。
如果缺少,用包管理器装一下就好。

编写第一个自动化脚本

登录到你的服务器后,先找一个目录存放脚本,比如~/scripts
执行mkdir -p ~/scripts && cd ~/scripts新建并进入该目录。
随后用vimnano创建一个文件:

nano my_first_script.sh

在文件中写入以下内容(这是一个简单的备份脚本示例):

#!/bin/bash
# 自动备份 /var/www/html 到 /backup 目录
BACKUP_DIR="/backup"
SOURCE_DIR="/var/www/html"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
mkdir -p "$BACKUP_DIR"
tar -czf "${BACKUP_DIR}/html_backup_${TIMESTAMP}.tar.gz" -C "$SOURCE_DIR" .
echo "备份完成:${BACKUP_DIR}/html_backup_${TIMESTAMP}.tar.gz"

保存退出后,关键一步是给脚本加上执行权限

chmod +x my_first_script.sh

现在可以手动运行看看效果:./my_first_script.sh
如果看到输出“备份完成”以及文件路径,说明脚本本身没毛病。
注意$SOURCE_DIR路径要根据你实际要备份的位置修改。

用cron设置定时任务

脚本写好了,但每次手动运行太麻烦。
Linux自带的cron服务可以帮你定时自动执行脚本。
使用命令crontab -e进入当前用户的定时任务编辑界面(首次会提示选择编辑器,选vim或nano均可)。

在这个文件中,每一行代表一个定时任务,格式是:

分 时 日 月 周  要执行的命令

例如,每天凌晨2点执行刚才的备份脚本:

0 2 * * * /home/youruser/scripts/my_first_script.sh

0 2 * * *表示“每天2点0分”。
注意路径要写绝对路径,因为cron执行时的环境变量与SSH登录时不同。
保存退出后,cron会自动加载新任务。
可以用crontab -l查看当前所有定时任务,确认你的条目已存在。

避坑指南(看到就是赚到)

新手写Linux自动化脚本最容易踩的坑有三个:

  • 路径问题:脚本里如果使用了相对路径(比如./),cron执行时可能找不到文件。务必在脚本开头用cd切换到安全目录,或者所有路径都写绝对路径。上面示例中的BACKUP_DIRSOURCE_DIR都是绝对路径,这样才可靠。
  • 环境变量缺失:cron环境比交互式终端干净很多,比如PATH可能只有/usr/bin:/bin。如果脚本里用到了非标准路径下的命令(如某些自定义工具),建议在脚本里显式设置PATHexport PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
  • 日志输出无声:脚本出错时,cron会通过邮件通知,但普通服务器未必配置了邮件系统。强烈建议在cron任务中把标准输出和错误输出重定向到日志文件
0 2 * * * /home/youruser/scripts/my_first_script.sh >> /var/log/backup.log 2>&1

>>表示追加写入,2>&1把错误信息也收集到同一个日志中。
这样第二天可以cat /var/log/backup.log查看执行情况。

效果验证与常见问题

完成上述配置后,如何确认自动化脚本真的在按计划运行?

  1. 手动测试:先手动执行一遍脚本,确认无报错。
  2. 查看cron日志:许多Linux系统的cron日志在/var/log/cron,用grep my_first_script /var/log/cron可以过滤出相关执行记录。
  3. 检查输出文件:比如上例中到/backup目录下查看是否有备份包生成,以及日志文件中是否有成功信息。
  4. 常见问题:cron命令不执行?检查cron服务是否启动:systemctl status crond(CentOS)或systemctl status cron(Ubuntu)。如果没启动,用systemctl enable crond --now启动并设置开机自启。脚本权限不足?除了chmod +x,还要确认脚本所属用户与cron任务用户一致。

如果你正在处理Linux自动化脚本,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。
坚持写几次,你会发现服务器运维越来越轻松。

分享到:
上一篇
Linux数据恢复实操指南:误删文件后如何一步步找回
下一篇
零基础入门Linux容器化:安装Docker并部署第一个容器
1
系统公告

高考专属福利来袭|凭准考证免费领香港 CN2 云服务器

值高考落幕之际,泽御云开启考生专属回馈 + 产品限时特惠双重活动,助力学子暑期学习建站 高考 考生专属福利 全体应届高考生,凭高考准考证即可免费申领【香港 CN2 轻量云服务器,4 核 4G AMD 处理器】,免费使用周期 30 天,可用于搭建个人站点、编程实操、技术实训,祝各位考生金榜题名,前程似锦! 泽御云资质齐全合规自营机房,线路覆盖香港 CN2、国内 BGP、内蒙电信、美国精品线路,售后全天候技术支持。 官方网站:www.zeyuyun.com,活动限时有效,优惠逾期不再保留。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意