Linux计划任务管理

在Linux系统中,计划任务管理主要通过cronat来实现。cron用于设置周期性执行的任务,而at则用于一次性计划任务。以下是关于Linux计划任务管理的一些详细信息和操作指南:

cron

crontab命令

crontab命令用于设置周期性被执行的指令。使用crontab -e可以编辑当前用户的crontab文件来添加任务,crontab -l用于查看当前用户的crontab文件内容,crontab -r用于删除当前用户的crontab文件。

at命令

at命令用于在指定时间执行一次性任务。使用at命令时,它会进入交互式界面,用户可以在其中输入要执行的命令,然后at会在指定的时间执行这些命令。

at命令的使用
  1. 首先,确保atd服务正在运行,可以使用systemctl status atd来检查。
  2. 使用at命令来设置任务,例如echo "Hello World" | at now + 1 minute会在1分钟后输出"Hello World"。
  3. 使用atq命令查看当前用户的at任务列表。
  4. 使用atrm命令删除指定的at任务。

systemd

systemd定时器是Linux系统中的一个重要功能,它用于调度和管理定时任务。这些定时任务可以在未来的某个或多个时间点自动执行预设的任务,如定期收集数据、发送邮件或执行其他自动化操作。

systemd定时器主要有两种类型:单调定时器和实时定时器。单调定时器是从一个特定的时间(如系统启动或服务单元执行的开始时间)开始后经过一段时间触发。而实时定时器则是在某个特定的时钟时间触发,类似于cron定时任务。

使用systemd定时器时,通常涉及以下步骤:

  1. 编写一个任务脚本,该脚本定义了要执行的具体任务。
  2. 编写一个服务单元文件,该文件定义了要执行的任务以及相关的配置信息。
  3. 编写一个定时器单元文件,该文件定义了任务的调度表,即任务的执行时间和频率。
  4. 重新装载systemd配置,使新的定时器生效。
  5. 执行命令让计时器开机启动,并启动它。

一、使用cron安排周期性任务

cron主要使用配置文件/etc/crontab来管理系统级任务调度

使用crontab命令为普通用户定制任务调度

crontab -u 指定要定义任务调度的用户名

crontab -e 用于编辑用户的cron调度文件

crontab -l  用于显示cron调度文件的内容

crontab -r 用于删除用户的cron调度文件

1.编写脚本并赋予可执行权限:

该脚本作用是向/root/1511.txt追加当前日期和时间。

2.编辑crontab文件并添加定时任务

末尾添加*/1 *  *  *  * root /root/1511.sh表示每分钟以root身份执行该脚本。

3.检查crond状态

4.检查任务文件

可以发现任务确实是每分钟执行一次。

二、使用at工具安排一次性任务

(1)在命令行中执行at命令进入任务设置状态。at后面跟时间参数,既要执行任务的时间

1、05:00代表5:00AM

2、MMDDYY表示某年某月某天

3、midnight代表12:00AM;noon代表12:00PM

4、now +:表示从现在开始多少时间以后执行

(2)出现at>提示符,进入命令编辑状态,设置要执行的命令或脚本。每输入一条命令按<Enter>键

(3)需要结束时按<Ctrl>+<D>键退出

(4)可根据需要执行命令atq查看等待运行的作业

(5)如果需要取消at作业,可以在atrm命令后跟atq命令输出的作业号,将该at作业删除。

下面给出一个简单的at配置示例

查询未执行at作业

删除at作业

三、systemd定时器

1.systemd定时器简介
systemd定时器是Linux系统中用于创建、管理和调度定时任务的一种功能强大的工具。它利用systemd的服务管理功能,允许用户在系统启动时或运行时按照预设的时间间隔或特定时间点自动执行命令或脚本。

与传统的cron或at工具相比,systemd定时器具有一些显著的优势:

集成性:systemd定时器与systemd服务紧密集成,可以充分利用systemd提供的各种功能和特性,如依赖管理、日志记录等。
灵活性:systemd定时器支持多种时间调度方式,包括一次性执行、周期性执行、事件触发等,可以满足各种复杂的定时任务需求。
可靠性:systemd定时器在系统启动时自动激活,并且可以在系统运行时进行管理和监控,确保定时任务的可靠性和稳定性

2.systemd定时器单元文件
systemd定时器单元文件是Linux系统中用于配置和管理定时任务的重要组件。这些文件通常以.timer后缀结尾,并存储在特定的目录中,如/etc/systemd/system或/usr/lib/systemd/system。

systemd定时器单元文件主要由几个关键部分组成。其中,[Unit]部分用于指定定时器的基本配置,如描述信息、依赖关系等。这些配置帮助systemd了解定时器的性质和所需的环境。另一个重要的部分是[Timer],它定义了定时器的触发规则。这些规则包括定时器的启动延迟、执行间隔等设置。常用的配置项有OnActiveSec、OnBootSec、OnCalendar等。例如,OnActiveSec指定当服务单元进入活动状态时触发定时器,而OnBootSec则指定在系统引导时触发定时器。

此外,systemd定时器主要有两种类型:单调定时器和实时定时器。单调定时器从一个特定的时间(如系统启动或systemd服务单元执行的开始时间)开始后,经过一段时间触发。而实时定时器则是在某个特定的时钟时间触发,类似于cron定时任务。

通过编写这些单元文件,用户可以定义定时任务的调度规则和执行的操作,从而实现自动化任务管理。同时,systemd提供了丰富的命令和工具,用于查看和管理这些定时器单元文件的状态和日志,方便用户进行调试和监控。

总的来说,systemd定时器单元文件是Linux系统中用于管理和调度定时任务的一种功能强大的工具,可以满足各种复杂的任务调度需求。

3.创建systemd定时器

先创建一个脚本

再给脚本提供权限 chmod +x /usr/local/bin/boot_backup

在/etc/systemd/system/目录下写一个配套的服务单元文件

内容解释: 

Description:提供提供简短描述信息,便于管理员理解和管理
Type: 服务类型,simple表示启动进程后立即认为服务启动成功。
ExecStart=/usr/local/bin/boot_backup:服务将启动并执行/usr/local/bin/boot_backup这个脚本

在/etc/systemd/system/目录下写一个定时器文件

内容解释:

 Description,述这个定时器的功能,用于显示和日志记录

 OnUnitActiveSec=5s定义当定时器关联的服务单元变为活跃状态后,定时器应等待多长时间再触发。这里设置为5秒

 AccuracySec=1us,设置定时器触发的精度,这里设置为1微秒

 WantedBy=multi-user.target,指定这个定时器单元应该在哪个目标下被激活,这里指定为multi-user.target,即多用户模式

[Timer]常用字节

OnBootSec: 这个选项指定了定时器在系统启动后多少秒触发。例如,OnBootSec=5min意味着定时器将在系统启动后的5分钟内触发。

OnActiveSec: 这个选项指定了当相关服务单元进入活动状态后多少秒触发定时器。它常用于确保服务在启动一段时间后再次运行,或者定期轮询某项任务。

OnCalendar: 这个选项允许你使用类似于cron的时间表达式来定义触发时间。你可以指定特定的日期、时间、星期几等。例如,OnCalendar=*-*-* 0/2:00意味着每两小时触发一次定时器。

Unit: 在[Timer]部分中,Unit选项用于指定当定时器触发时应该启动的服务单元。它必须指向一个有效的.service单元文件。

Persistent: 如果设置为true,当定时器触发时,即使相关服务单元没有运行,它也会被启动。如果设置为false,则仅当服务单元已经处于活动状态时,定时器才会触发它。

AccuracySec: 这个选项定义了定时器触发的最大时间偏差。由于系统负载和其他因素,定时器可能不会精确地按照指定的时间触发。通过设置AccuracySec,你可以指定一个时间范围,在这个范围内触发定时器都是可接受的。

RandomizedDelaySec: 为了避免多个定时器在同一时间触发导致的系统负载峰值,你可以使用这个选项为定时器添加一个随机延迟。例如,设置为30min将在定时器应该触发的时间前后30分钟内随机选择一个时间点来触发它。

通过setenforce 0命令,我们可以将SELinux设置为Permissive模式,允许服务在不受限制的情况下进行测试或运行

执行systemctl daemom-reload命令重新装载单元文件。

设置定时器开机自启、运行,并查看状态

在这里,我们可以看到Active的状态为running,代表定时器运行正常

Triggers: ● boot_backup.service 表示当定时器触发时,它将启动boot_backup.service服务单元。

查看/root/syslog.txt文件

之前编写的脚本是往/root/syslog.txt里写入一次时间,定时器设置为5秒执行一次。所以我们需要检验一下。执行cat /root/systemd_test.txt命令。 

 

如图间隔5秒符合之前的设置,则定时器创建成功

  • 28
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值