Centos系统中创建定时器完成定时任务

Centos系统中创建定时器完成定时任务

在这里插入图片描述

时间不一定能证明很多东西,但是一定能看透很多东西,坚信自己的选择,不动摇,使劲跑,明天会更好。

在 CentOS 上,可以使用 systemd 定时器来创建一个每十秒执行一次的任务。systemd 的定时器提供了更细粒度的定时功能,可以替代 cron 来执行任务。以下是如何使用 systemd 定时器来实现每十秒执行一次脚本的步骤:

1. 创建一个执行任务的脚本

首先,创建一个脚本来执行所需的任务。例如,创建一个脚本 /usr/local/bin/create_wanghui.sh,内容如下:

#!/bin/bash

# 定义要创建的目录
DIRECTORY="/usr/local/src/wanghui"

# 检查目录是否已经存在
if [ -d "$DIRECTORY" ]; then
  echo "目录 $DIRECTORY 已经存在."
else
  # 创建目录
  mkdir -p "$DIRECTORY"
  
  # 检查是否创建成功
  if [ -d "$DIRECTORY" ]; then
    echo "目录 $DIRECTORY 已成功创建."
  else
    echo "目录 $DIRECTORY 创建失败."
  fi
fi

2. 赋予脚本执行权限

chmod +x /usr/local/bin/create_wanghui.sh

3. 创建一个 systemd 服务单元文件

创建一个 systemd 服务单元文件 /etc/systemd/system/create_wanghui.service,内容如下:

[Unit]
Description=Create Wanghui Directory

[Service]
ExecStart=/usr/local/bin/create_wanghui.sh

4. 创建一个 systemd 定时器单元文件

创建一个 systemd 定时器单元文件 /etc/systemd/system/create_wanghui.timer

[Unit]
Description=Run create_wanghui.sh every 10 seconds

[Timer]
OnBootSec=10sec
OnUnitActiveSec=10sec

[Install]
WantedBy=timers.target

这段配置是一个 systemd 定时器单元文件的内容,用于定义一个任务每隔10秒钟执行一次。以下是对各部分的详细解释:

[Unit]

  • Description=Run create_wanghui.sh every 10 seconds
    这一行提供了定时器的简短描述,用来说明定时器的用途。在这个例子中,它描述了该定时器会每10秒执行一次 create_wanghui.sh 脚本。

[Timer]

  • OnBootSec=10sec
    这个选项指定了定时器在系统启动后多久首次启动。在这里,它设置为 10sec,意味着系统启动后10秒钟,定时器会首次运行。

  • OnUnitActiveSec=10sec
    这个选项指定了定时器在上次启动后多久再次启动。在这里,设置为 10sec,意味着定时器在每次任务完成后10秒钟再次启动任务。因此,任务会每隔10秒钟执行一次。

[Install]

  • WantedBy=timers.target
    这一行指定了定时器在什么时候启动。timers.target 是一个 systemd 目标,表示当系统到达 timers.target 这个状态时(通常是在系统启动的过程中),这个定时器将会被启用。

总体解释

这个 systemd 定时器配置用于设置一个任务,每次系统启动后10秒钟运行,并且之后每隔10秒钟重复执行该任务。定时器的行为由 OnBootSecOnUnitActiveSec 两个指令控制,确保任务定期执行。如果这个定时器被启用,它将从系统启动后10秒钟开始,每10秒钟运行一次指定的服务(通常是一个脚本或程序)。

如果想要每天凌晨一点执行呢

[Unit]
Description=Run create_wanghui.sh daily at 1 AM

[Timer]
OnCalendar=*-*-* 01:00:00
Persistent=true

[Install]
WantedBy=timers.target

这段配置是一个 systemd 定时器单元文件,用于每天凌晨1点运行 create_wanghui.sh 脚本。以下是各部分的详细解释:

[Unit]

  • Description=Run create_wanghui.sh daily at 1 AM
    这行描述了定时器的用途,即每天凌晨1点执行 create_wanghui.sh 脚本。

[Timer]

  • OnCalendar=-- 01:00:00*
    这一行定义了定时器的执行时间。OnCalendar 指定了一个日期和时间格式:

  • *-*-* 表示任意年份、任意月份、任意日期。

  • 01:00:00 表示每天的凌晨1点整。

因此,这个定时器配置将会在每天凌晨1点00分00秒触发任务。

  • Persistent=true
    这一行确保了当系统在计划执行时间未运行时,任务会在下次系统启动时自动执行。这意味着即使系统在凌晨1点关闭或处于睡眠状态,任务将在系统再次启动时立即执行,确保任务不会错过。

[Install]

  • WantedBy=timers.target
    这一行指定了定时器在 timers.target 到达时启动。timers.target 是一个系统级别的目标,表示定时任务将会在系统达到这个目标时开始运行。

总体解释

这个 systemd 定时器配置用于设置一个任务,确保它每天在凌晨1点准时执行。如果系统在计划执行时间之前未开机或在执行时间处于睡眠状态,那么任务会在系统下次启动时立即执行,以保证任务不会错过。

5. 重新加载 systemd 配置并启动定时器

重新加载 systemd 配置,以使其识别新创建的单元文件:

sudo systemctl daemon-reload

启动定时器:

sudo systemctl start create_wanghui.timer

启用定时器,使其在系统启动时自动启动:

sudo systemctl enable create_wanghui.timer

6. 检查定时器状态

你可以使用以下命令检查定时器的状态和下一次触发时间:

systemctl list-timers create_wanghui.timer

这样,你就创建了一个 systemd 定时器,每十秒运行一次指定的脚本。这个方法利用了 systemd 的定时器功能,比 cron 更灵活和强大,特别是在需要精细的时间控制时。

  • 14
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT小辉同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值