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

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

相关推荐
finegx8 分钟前
反汇编objdump和strace学习
linux·经验分享·学习
朱一头zcy11 分钟前
[Win11家庭中文版]如何关闭基于虚拟化的安全性VBS(为了解决VBS启用状态下 VMware性能很差 频繁闪退或有各种不一样的崩溃报错)
linux·经验分享·vbs
xlp666hub13 分钟前
【Linux驱动实战】:带参数的内核模块
linux·c
芥子沫14 分钟前
Linux下编程有什么优势?
linux·运维·服务器
技术小甜甜18 分钟前
[AI] 从文档问答到流程自动化:Dify 最近为什么总出现在 AI 落地讨论里?
运维·人工智能·自动化·工作流·dify
REDcker34 分钟前
Linux systemd发展演进与实战指南
linux·运维·服务器
白太岁35 分钟前
Linux 进程调度模块
linux·运维·服务器
17(无规则自律)37 分钟前
【Linux驱动实战】:最简单的内核模块
linux·c语言·驱动开发·嵌入式硬件
BioRunYiXue1 小时前
甘油不够了,能用植物油保存菌种吗?
java·linux·运维·服务器·网络·人工智能·eclipse
羸弱的穷酸书生1 小时前
跟AI学一手之运维Agent
运维·人工智能·agent