Linux 定时任务(超详细)
一则小广告
最近,小哈正在带小伙伴做前后端分离博客项目,采用技术栈 Spring Boot + Mybatis Plus + Vue 3.2 + Vite 4
,手把手教学,前端 + 后端全栈开发,从 0 到 1 讲解每个功能开发过程,1v1 答疑,陪伴式直到项目上线,目前第六章 《Element Plus 手搭 Admin 后台管理骨架》已快完结,截止到目前,已更新 52 节内容,共计 81557 字,演示截图:433 张,持续更新中,后续还会上新更多项目,欢迎点击加入。
在 Linux 中,你可以使用 cron
或 systemd
来设置定时任务。定时任务允许你在预定的时间或周期性地执行脚本、命令或程序。以下是在 Linux 中设置定时任务的两种常用方法:
1. 使用 cron
cron
是一个用于在预定时间执行命令的服务。它使用 crontab
来管理定时任务。每个用户都有一个对应的 crontab
文件,允许该用户设置定时任务。
a. 查看现有定时任务
要查看当前用户的定时任务,可以使用以下命令:
crontab -l
b. 编辑定时任务
要编辑或添加定时任务,可以使用以下命令:
crontab -e
这将打开一个文本编辑器,让你编辑定时任务。每行一个定时任务,格式如下:
分钟 小时 日期 月份 星期 命令或脚本
例如,以下是一个在每天凌晨 3 点执行脚本的定时任务的例子:
0 3 * * * /path/to/your/script.sh
c. 定时任务时间格式说明
*
: 表示所有可能的值。例如,* * * * *
表示每分钟都运行一次。*/n
: 表示每 n 个时间单位运行一次。例如,*/5 * * * *
表示每 5 分钟运行一次。n
: 表示特定的时间单位。例如,30 3 * * 1
表示在星期一的凌晨 3 点 30 分执行任务。
d. 删除定时任务
要删除当前用户的所有定时任务,可以使用以下命令:
crontab -r
2. 使用 systemd
在较新的 Linux 系统中,也可以使用 systemd
来管理定时任务。systemd
使用 .timer
和 .service
单元来定义定时任务。
a. 编辑或添加定时任务
首先,你需要创建一个 .service
文件,定义要执行的命令或脚本。
创建一个新的服务文件(例如 mytask.service
),并在其中定义要运行的命令:
sudo nano /etc/systemd/system/mytask.service
在打开的文件中添加以下内容(注意将 /path/to/your/script.sh
替换为实际的脚本路径):
[Unit]
Description=My Custom Task
[Service]
ExecStart=/path/to/your/script.sh
[Install]
WantedBy=multi-user.target
保存并关闭文件。
b. 创建 .timer
文件
然后,创建一个 .timer
文件,定义定时任务的时间间隔。
创建一个新的定时器文件(例如 mytask.timer
),并在其中定义执行间隔:
sudo nano /etc/systemd/system/mytask.timer
在打开的文件中添加以下内容(注意将 YourInterval
替换为你想要的时间间隔,如 daily
、hourly
、weekly
、15min
等):
[Unit]
Description=My Custom Task Timer
[Timer]
OnBootSec=15min
OnUnitActiveSec=YourInterval
[Install]
WantedBy=timers.target
保存并关闭文件。
c. 重载 systemd
完成上述步骤后,重新加载 systemd
,使新的定时任务生效:
sudo systemctl daemon-reload
d. 启动定时任务
启动定时任务:
sudo systemctl start mytask.timer
e. 停止定时任务
停止定时任务:
sudo systemctl stop mytask.timer
f. 开机自启动定时任务
如果你希望定时任务在系统启动时自动执行,可以启用开机自启动:
sudo systemctl enable mytask.timer
以上这两种方法都可以帮助你在 Linux 中设置定时任务。选择适合你的方法,并根据实际需求设置定时任务。