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

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

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

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

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

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

bash 复制代码
#!/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. 赋予脚本执行权限

bash 复制代码
chmod +x /usr/local/bin/create_wanghui.sh

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

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

ini 复制代码
[Unit]
Description=Create Wanghui Directory

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

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

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

ini 复制代码
[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秒钟运行一次指定的服务(通常是一个脚本或程序)。

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

sh 复制代码
[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 配置,以使其识别新创建的单元文件:

bash 复制代码
sudo systemctl daemon-reload

启动定时器:

bash 复制代码
sudo systemctl start create_wanghui.timer

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

bash 复制代码
sudo systemctl enable create_wanghui.timer

6. 检查定时器状态

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

bash 复制代码
systemctl list-timers create_wanghui.timer

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

相关推荐
a266378964 分钟前
解决yum命令报错“Could not resolve host: mirrorlist.centos.org
linux·运维·centos
上海文顺负载箱17 分钟前
如何评估焊机测试负载均衡性能
运维·负载均衡
铁锤妹妹头发多1 小时前
新手用docker真**难受
运维·docker·容器
2739920291 小时前
Ubuntu20.04 安装build-essential问题
linux
超栈1 小时前
HCIP(11)-期中综合实验(BGP、Peer、OSPF、VLAN、IP、Route-Policy)
运维·网络·网络协议·计算机网络·web安全·网络安全·信息与通信
Cachel wood1 小时前
Github配置ssh key原理及操作步骤
运维·开发语言·数据库·windows·postgresql·ssh·github
编程一生1 小时前
回调数据丢了?
运维·服务器·前端
华为云PaaS服务小智2 小时前
华为大咖说 | 浅谈智能运维技术
运维·华为·华为云
zhd15306915625ff4 小时前
化工厂主要涉及的自动化备件有哪些?
运维·自动化·化工厂
Jason-河山4 小时前
利用API返回值实现商品信息自动化更新:技术与实践
运维·自动化