- 作者:老汪软件技巧
- 发表时间:2024-08-20 10:01
- 浏览量:
时间不一定能证明很多东西,但是一定能看透很多东西,坚信自己的选择,不动摇,使劲跑,明天会更好。
在 CentOS 上,可以使用 systemd 定时器来创建一个每十秒执行一次的任务。systemd 的定时器提供了更细粒度的定时功能,可以替代 cron 来执行任务。以下是如何使用 systemd 定时器来实现每十秒执行一次脚本的步骤:
1. 创建一个执行任务的脚本
首先,创建一个脚本来执行所需的任务。例如,创建一个脚本 /usr/local/bin/create_wanghui.sh,内容如下:
#!/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 /usr/local/bin/create_wanghui.sh
3. 创建一个 systemd 服务单元文件
创建一个 systemd 服务单元文件 /etc/systemd/system/create_wanghui.service,内容如下:
[Unit]
Description=Create Wanghui Directory
[Service]
ExecStart=/usr/local/bin/create_wanghui.sh
4. 创建一个 systemd 定时器单元文件
创建一个 systemd 定时器单元文件 /etc/systemd/system/create_wanghui.timer:
[Unit]
Description=Run create_wanghui.sh every 10 seconds
[Timer]
OnBootSec=10sec
OnUnitActiveSec=10sec
[Install]
WantedBy=timers.target
这段配置是一个 systemd 定时器单元文件的内容,用于定义一个任务每隔10秒钟执行一次。以下是对各部分的详细解释:
[Unit][Timer][Install]总体解释
这个 systemd 定时器配置用于设置一个任务,每次系统启动后10秒钟运行,并且之后每隔10秒钟重复执行该任务。定时器的行为由 OnBootSec 和 OnUnitActiveSec 两个指令控制,确保任务定期执行。如果这个定时器被启用,它将从系统启动后10秒钟开始,每10秒钟运行一次指定的服务(通常是一个脚本或程序)。
如果想要每天凌晨一点执行呢
[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][Timer]
因此,这个定时器配置将会在每天凌晨1点00分00秒触发任务。
[Install]总体解释
这个 systemd 定时器配置用于设置一个任务,确保它每天在凌晨1点准时执行。如果系统在计划执行时间之前未开机或在执行时间处于睡眠状态,那么任务会在系统下次启动时立即执行,以保证任务不会错过。
5. 重新加载 systemd 配置并启动定时器
重新加载 systemd 配置,以使其识别新创建的单元文件:
sudo systemctl daemon-reload
启动定时器:
sudo systemctl start create_wanghui.timer
启用定时器,使其在系统启动时自动启动:
sudo systemctl enable create_wanghui.timer
6. 检查定时器状态
你可以使用以下命令检查定时器的状态和下一次触发时间:
systemctl list-timers create_wanghui.timer
这样,你就创建了一个 systemd 定时器,每十秒运行一次指定的脚本。这个方法利用了 systemd 的定时器功能,比 cron 更灵活和强大,特别是在需要精细的时间控制时。