CentOS系统中创建定时器

一、配置定时器执行任务

1、创建一个脚本来执行任务

vim /data/gxpt/script/test.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、赋予脚本执行权限

chmod +x /data/gxpt/script/test.sh

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

vim /etc/systemd/system/dccp-natural-resources.service

bash 复制代码
[Unit]
Description=胡海洋,自然资源解析入doris

[Service]
Type=oneshot
ExecStart=/data/gxpt/script/test.sh

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

vim /etc/systemd/system/dccp-natural-resources.timer

bash 复制代码
[Unit]
Description=每天凌晨,胡海洋自然资源入doris

[Timer]
OnCalendar=*-*-* *:*:0/5  #每隔5秒执行一次
Persistent=true
Unit=dccp-natural-resources.service  #被调度的服务

[Install]
WantedBy=timers.target

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

sudo systemctl daemon-reload

6、启动定时器

sudo systemctl start dccp-natural-resources.timer

7、关闭定时器

sudo systemctl stop dccp-natural-resources.timer

8、检查定时器状态

sudo systemctl list-timers dccp-natural-resources.timer

查看定时器日志 journalctl -u dccp-natural-resources.timer

9、配置定时器在系统启动时自动启动

sudo systemctl enable dccp-natural-resources.timer

二、排查定时器or任务启动失败

查看定时器状态,确定定时器本身是否正常启动

sudo systemctl status dccp-natural-resources.timer

bash 复制代码
[root@shujgxptxnkyzzx_toqk script]# sudo systemctl status dccp-natural-resources.timer
● dccp-natural-resources.timer - 每天凌晨,胡*洋自然资源入doris
   Loaded: loaded (/etc/systemd/system/dccp-natural-resources.timer; disabled; vendor preset: disabled)
   Active: inactive (dead)

Jan 23 10:31:42 shujgxptxnkyzzx_toqk systemd[1]: Refusing to start, unit to trigger not loaded.
Jan 23 10:31:42 shujgxptxnkyzzx_toqk systemd[1]: Failed to start 每天凌晨,胡*洋自然资源入doris.

上述信息中的 Active: inactive (dead) 说明定时器本身没有启动起来,需检查定时器配置 !!!

查看服务状态

sudo systemctl status dccp-natural-resources.service -l

bash 复制代码
[root@shujgxptxnkyzzx_toqk script]# systemctl status dccp-natural-resources.service -l
● dccp-natural-resources.service - 胡*洋,自然资源解析入doris
   Loaded: loaded (/etc/systemd/system/dccp-natural-resources.service; static; vendor preset: disabled)
   Active: activating (start) since Fri 2026-01-23 14:17:10 CST; 19ms ago
 Main PID: 12610 ((date))
   CGroup: /system.slice/dccp-natural-resources.service

Jan 23 14:17:10 shujgxptxnkyzzx_toqk systemd[1]: Starting 胡*洋,自然资源解析入doris...

查看服务单元日志 🍁 🍁 🍁

journalctl -u dccp-natural-resources.service -b

bash 复制代码
[root@shujgxptxnkyzzx_toqk script]# journalctl -u dccp-natural-resources.service -b
-- Logs begin at Thu 2024-12-19 09:47:37 CST, end at Fri 2026-01-23 10:46:14 CST. --
Jan 23 10:31:42 shujgxptxnkyzzx_toqk systemd[1]: [/etc/systemd/system/dccp-natural-resources.service:5] Executable path is not absolute, ignoring: date > /data/gxpt/script/test.log
Jan 23 10:31:42 shujgxptxnkyzzx_toqk systemd[1]: dccp-natural-resources.service lacks both ExecStart= and ExecStop= setting. Refusing.

上述信息中的 Executable path is not absolute, ignoring: date,说明需将date命令换成/usr/bin/data,即使用全路径名。

查看服务单元日志(重点查看最后20条) 🍁 🍁 🍁

journalctl -u dccp-natural-resources.service --since "5 min ago" | tail -n 20

bash 复制代码
[root@shujgxptxnkyzzx_toqk script]# journalctl -u dccp-natural-resources.service --since "5 min ago" | tail -n 20
Jan 23 14:27:21 shujgxptxnkyzzx_toqk systemd[1]: start request repeated too quickly for dccp-natural-resources.service
Jan 23 14:27:21 shujgxptxnkyzzx_toqk systemd[1]: Failed to start 胡海洋,自然资源解析入doris.
Jan 23 14:27:21 shujgxptxnkyzzx_toqk systemd[1]: dccp-natural-resources.service failed.
Jan 23 14:27:22 shujgxptxnkyzzx_toqk systemd[1]: Starting 胡海洋,自然资源解析入doris...
Jan 23 14:27:22 shujgxptxnkyzzx_toqk systemd[1]: dccp-natural-resources.service: main process exited, code=exited, status=1/FAILURE
Jan 23 14:27:22 shujgxptxnkyzzx_toqk date[14043]: /usr/bin/date: extra operand '/data/gxpt/script/test.log'
Jan 23 14:27:22 shujgxptxnkyzzx_toqk date[14043]: Try '/usr/bin/date --help' for more information.
Jan 23 14:27:22 shujgxptxnkyzzx_toqk systemd[1]: Failed to start 胡海洋,自然资源解析入doris.
Jan 23 14:27:22 shujgxptxnkyzzx_toqk systemd[1]: Unit dccp-natural-resources.service entered failed state.
Jan 23 14:27:22 shujgxptxnkyzzx_toqk systemd[1]: dccp-natural-resources.service failed.

这里的问题是,dccp-natural-resources.service 服务在短时间内启动失败次数过多,触发了 systemd 的启动频率限制机制。常见的失败原因包括:

1、服务配置错误:脚本路径、依赖项或权限问题导致服务无法正常启动;

2、资源冲突:端口占用或文件锁冲突;

3、启动频率限制:默认策略为 10秒内最多尝试5次启动(StartLimitIntervalSec=10s + StartLimitBurst=5)

重置失败计数器

sudo systemctl reset-failed dccp-natural-resources.service

重启服务,确保服务可以正常启动

sudo systemctl start dccp-natural-resources.service

确保定时器不要过于频繁的启动

相关推荐
IT探索3 分钟前
Linux 查找文件指令总结
linux·算法
晚风吹长发5 分钟前
Docker使用——Docker容器及相关命令
linux·运维·服务器·docker·容器·架构
ShiXZ21314 分钟前
Docker Compose 安装与配置指南
运维·docker·容器
sulikey19 分钟前
个人Linux操作系统学习笔记11 - 环境变量
linux·笔记·学习
Kina_C25 分钟前
NFS与Autofs快速讲解-从原理到实战配置
linux·nfs·autofs
麦聪聊数据28 分钟前
企业数据市场建设(四):流程闭环与价值运营,让数据市场真正转起来
运维·数据库
皮卡狮29 分钟前
文件系统:磁盘硬件寻址和系统软件寻址
linux
是潮汕的灿灿展吖1 小时前
Centos离线部署nfs操作
linux·运维·centos
Kina_C1 小时前
Apache HTTP Server 安装、配置与高级功能详解
linux·http·apache
治愈系贝壳1 小时前
ARM --- day 6 时钟
linux·arm开发·学习