Systemd定时任务

目录

一、Crontab周期性任务安排

1.cron介绍

2.配置文件/etc/crontab

3.在/etc/cron.d目录中定义个别的周期性任务

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

5.控制对cron的访问

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

1. at

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

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

(3)需要结束时按+组合键退出。

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

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

2. batch

三、创建systemd定时器

概述:

具体步骤:

1.登录Linux虚拟机,并进行远程连接

2.进入root模式,编写任务脚本

3.编写配套的服务单元文件

4.编写定时器单元文件

5.重新装载单元文件

6.列出定时器,并使定时器开机启动

一、Crontab周期性任务安排

1.cron介绍

cron用来管理周期性重复执行的作业任务调度,适合日常系统维护。Cron服务每分钟都检查/etc/crontab文件、etc/cron.d目录和/var/spool/cron目录中的变化。

2.配置文件/etc/crontab

Cron主要使用该文件来管理系统级任务调度。

前5个字段用于表示计划时间,数字取值范围:分钟(0~59),小时 (0~23),日期(1~31),月份(1~12),星期(0~7,0或7代表星期日)。尤其要注意以下几个特殊符号的用途:星号“*”为通配符,表示取值范围中的任意值;连字符“”表示数值区间;逗号“,”用于多个数值列表;正斜线“/”用来指定间隔频率。在某范围后面加上“/整数值”表示在该范围内每跳过该整数值执行一次任务。例如“*/3”或者“1-12/3”用在“月份”字段表示每3个月,“*/5”或者“0-59/5”用在“分钟”字段表示每5分钟。

3.在/etc/cron.d目录中定义个别的周期性任务

例如添加一个文件backup用于执行备份任务

#每月第一天4:10AM执行自定义脚本

10 4 1 * * root/scripts/backup.sh

对于需要定期执行的软件,可以使用一个新的cron配置文件

Centos7默认在该目录下创建3个配置文件:

Ohourly,raid-check和sysstat文件

其中Ohourly比较特别,配置内容如下:

#Run the hourly jobs
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
01 * * * * root run-parts /etc/cron.hourly

Ohourly与/etc/crontab内容几乎一样,只是已经定义了一个任务。

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

上述两种配置是系统级的,只有root 用户能够通过/etc/crontab 文件和/etc/cron.d/目录来定制cron任务调度。普通用户只能使用crontab命令创建和维护自己的cron配置文件。该命令的基本用法为:

crontab[-u用户名][-el-1-r]

选项-u指定要定义任务调度的用户名,没有此选项则为当前用户;-e用于编辑用户的cron。调度文件;一1用于显示cron 调度文件的内容;-e用于删除用户的cron调度文件。

5.控制对cron的访问

可通过/etc/cron.allow 和/etc/cron.deny 文件来限制用户对cron服务的使用。

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

cron根据时间、日期、星期、月份的组合来调度对重复作业任务的周期性执行,有时也需要安排一次性任务,在Linux系统中通常使用at工具在指定时间内调度一次性任务。另外batch工具用于在系统平均载量降到0.8以下时执行一次性的任务。这两个工具都由a软件包提供,由at服务(守护进程名为atd)支持。

1. at

CentOS7默认安装at软件包,并自动启动at服务。下面讲解配置at作业,在某一指定时间内调度一项一次性作业任务的步骤:

(1)在命令行中执行at命令进入作业设置状态。at后面跟时间参数,即要执行任务的时间。
(2)出现at>提示符,进入命令编辑状态,设置要执行的命令或脚本。可指定多条命令,每输入一条命令,按<Enter>键。
(3)需要结束时按<Ctrl>+<D>组合键退出。
(4)可根据需要执行命令atq查看等待运行(未执行)的作业。
(5)如果需要取消at作业,可以在atrm命令后跟atq命令输出的作业号,将该a作业删除。

与cron类似,可以通过/etc/at.allow和/etc/at.deny文件来限制用户对at服务的使用。CentOs 7默认只保留/etc/at.deny。root不受这两个控制文件的制约,总是可以使用at。

2. batch

batch与at一样使用atd守护进程,主要执行一些不太重要及消耗资源比较多的维护任务。配置和管理batch作业的过程与at作业类似。执行batch命令后,at>提示符就会出现,编辑要执行的命令即可。

三、创建systemd定时器

概述:

systemd定时器是Linux系统中一种用于调度任务的工具,它允许用户在未来的某个或多个时点预定要执行的任务,如定期清理文件、在嵌入式系统中定时调用任务采集数据等。随着systemd的兴起,systemd定时器逐渐开始取代传统的cron。systemd定时器有两种主要类型:单调定时器和实时定时器。单调定时器是从一个特定的时间(如系统启动或systemd服务单元执行的开始时间)开始后过一段时间触发;而实时定时器则是在某个特定的时钟时间触发,类似于cron定时任务。这两种定时器可以满足不同要求的任务。

具体步骤:

1.登录Linux虚拟机,并进行远程连接

2.进入root模式,编写任务脚本

任务脚本的内容如下:

(脚本的用途是将日期写入临时目录下的“我的日志中”。)

编写完任务脚本后要能在指定目录中找到这个脚本,并且将它执行。

Chmod +x abc.sh

Bash abc.sh

(这里的abc.sh是任务脚本的名称)

3.编写配套的服务单元文件

这个服务单元文件在本次实验中被命名为:boot_backup.service,保存在/etc/systemd/system目录中。内容如下:

[Unit]
Description=Backup boot

[Service]
Type=simple
ExecStart=/bin/bash /root/abc.sh

4.编写定时器单元文件

这个定时器单元文件在本次实验中被命名为:boot_backup.timer,保存在/etc/systemd/system目录中。内容如下:

[Unit]
Description=Run boot backup weekly and on boot
[Timer]
OnUnitActiveSec=3s
AccuracySec=1us
Unit=boot_backup.service
[Install]
WantedBy=multi-user.target

OnUnitActiveSec在这里的意思是在多少时间后重复执行一次脚本。

AccuracySec在这里的意思是两次脚本执行时的偏差。

5.重新装载单元文件

Systemctl daemon-reload

6.列出定时器,并使定时器开机启动

Systemctl enable boot_backup.timer

Systemctl start boot_backup.timer

Systemctl start boot_backup.service

7.查看任务状态,并检验任务是否执行

Systemctl status boot_backup.timer
Tail -f /tmp/mylog.txt

综上所述,systemd定时器就创建成功了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值