在CentOS中,systemd 是一个系统和服务管理器,它提供了强大的定时任务功能,称为 timers。使用 systemd 定时器可以比传统的 cron 更加灵活和强大。下面是如何在CentOS中使用 systemd 定时器的步骤:
首先,你需要创建一个服务单元文件,这个文件定义了你想要定时执行的任务。
例如,创建一个名为 my-service.service 的文件:
[Unit]
Description=My Custom Service
[Service]
ExecStart=/usr/bin/echo "Hello, World!"
将这个文件保存到 /etc/systemd/system/ 目录下。
接下来,创建一个定时器单元文件,这个文件定义了定时任务的触发规则。
例如,创建一个名为 my-timer.timer 的文件:
[Unit]
Description=Run My Service every 5 minutes
[Timer]
OnBootSec=5min
OnUnitActiveSec=5min
Unit=my-service.service
[Install]
WantedBy=timers.target
将这个文件保存到 /etc/systemd/system/ 目录下。
使用 systemctl 命令来启用并启动定时器:
sudo systemctl daemon-reload
sudo systemctl enable --now my-timer.timer
你可以使用以下命令来查看定时器的状态:
sudo systemctl list-timers --all
或者查看特定定时器的状态:
sudo systemctl status my-timer.timer
如果你需要停止或禁用定时器,可以使用以下命令:
sudo systemctl stop my-timer.timer
sudo systemctl disable my-timer.timer
如果你遇到问题,可以使用 journalctl 命令来查看日志:
sudo journalctl -u my-timer.timer
假设你有一个脚本 /usr/local/bin/my-script.sh,内容如下:
#!/bin/bash
echo "Script executed at $(date)" >> /var/log/my-script.log
确保脚本有执行权限:
chmod +x /usr/local/bin/my-script.sh
创建服务单元文件 /etc/systemd/system/my-script.service:
[Unit]
Description=Run My Script
[Service]
ExecStart=/usr/local/bin/my-script.sh
创建定时器单元文件 /etc/systemd/system/my-script.timer:
[Unit]
Description=Run My Script every minute
[Timer]
OnBootSec=1min
OnUnitActiveSec=1min
Unit=my-script.service
[Install]
WantedBy=timers.target
启用并启动定时器:
sudo systemctl daemon-reload
sudo systemctl enable --now my-script.timer
通过这些步骤,你就可以在CentOS中使用 systemd 定时器来执行定时任务了。