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

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

相关推荐
好好沉淀1 小时前
Docker 部署 Kibana:查 ES 版本 + 版本匹配 + 中文界面
linux·docker
!chen1 小时前
PLG log server note
运维·jenkins
Honmaple1 小时前
OpenClaw 远程访问配置指南:SSH 隧道与免密登录
运维·ssh
China_Yanhy1 小时前
入职 Web3 运维日记 · 第 4 日:拒绝“裸奔” —— 接口加固与监控闭环
运维·区块链
Jia ming2 小时前
Linux内存管理三层次解密
linux·运维·服务器
Mr_Xuhhh2 小时前
C语言字符串与内存操作函数模拟实现详解
java·linux·算法
新缸中之脑2 小时前
Nanobot:轻量级OpenClaw
java·运维·网络
yqcoder2 小时前
uni-app 之 设置 tabBar
运维·服务器·uni-app