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 更灵活和强大,特别是在需要精细的时间控制时。

相关推荐
持之以恒的天秤2 小时前
线程同步学习
linux·学习
ALex_zry5 小时前
SSH主机密钥验证失败:全面解决方案与技术手册
运维·ssh
厦门辰迈智慧科技有限公司6 小时前
城市排水管网流量监测系统解决方案
运维·服务器
我没有开挂6 小时前
旧 docker 版本通过 nvkind 搭建虚拟多节点 gpu 集群的坑
运维·docker·容器
qq_339282236 小时前
centos中libc.so.6No such file的解决方式
linux·运维·centos
leoufung6 小时前
ECPF 简介
linux·网络·kernel
小鸡,啄米7 小时前
centos9安装docker 配置docker代理
运维·docker·容器
水银嘻嘻7 小时前
12 web 自动化之基于关键字+数据驱动-反射自动化框架搭建
运维·前端·自动化
在肯德基吃麻辣烫7 小时前
Netdata在Ubuntu环境下的安装与配置:构建实时系统监控与性能分析平台
linux·运维·ubuntu
不念霉运8 小时前
Gitee DevOps:中国企业数字化转型的“本土化加速器“
运维·gitee·团队开发·代码规范·devops·代码复审