Linux 定时任务(超详细)

您所在的位置:网站首页 cron设置只执行一次 Linux 定时任务(超详细)

Linux 定时任务(超详细)

2024-07-12 06:49| 来源: 网络整理| 查看: 265

一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / Java 学习路线 / 1v1 提问 / 学习打卡 / 每月赠书活动

目前, 星球 内第2个项目《仿小红书(微服务架构)》正在更新中。第1个项目:全栈前后端分离博客项目2期已经完结,演示地址:http://116.62.199.48/。采用技术栈 Spring Boot + Mybatis Plus + Vue 3.x + Vite 4,手把手,前端 + 后端全栈开发,从 0 到 1 讲解每个功能点开发步骤,1v1 答疑,陪伴式直到项目上线,目前已更新了 288 小节,累计 45w+ 字,讲解图:2012 张,还在持续爆肝中,后续还会上新更多项目,目标是将 Java 领域典型的项目都整上,如秒杀系统、在线商城、IM 即时通讯、权限管理等等,已有 1600+ 小伙伴加入,欢迎点击围观

在 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 中设置定时任务。选择适合你的方法,并根据实际需求设置定时任务。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3