【运维】Linux 服务器定时重启的实现方式

说明

CentOS 定时重启可以通过两种方式实现:使用 cron 定时任务或者利用 systemd 的 timer 功能定时执行脚本。下面分别介绍这两种方法的配置和脚本实现。

cron 定时任务

执行以下命令以 root 用户身份打开 /etc/crontab 文件进行编辑:

vi /etc/crontab

在文件末尾添加以下内容,表示每天的凌晨 3 点执行重启操作:

0 3 * * * root /sbin/reboot

其中,0 3 * * * 表示每天的凌晨 3 点执行一次,root 表示使用 root 用户执行命令,/sbin/reboot 表示执行系统重启命令。

可以根据自己的需求调整时间设置,也可以使用其他命令代替 /sbin/reboot 实现其他功能。

保存并关闭文件后,cron 就会按照设定的时间周期自动执行脚本。

systemd timer 定时执行脚本

创建脚本文件 /usr/local/bin/reboot.sh,并添加以下内容:

#!/bin/bash
/sbin/reboot

这里的 /usr/local/bin 是一个常用的存放自定义脚本的目录,如果需要可以根据实际情况进行修改。

创建一个 timer 文件 /etc/systemd/system/reboot.timer,并添加以下内容:

[Unit]
Description=Reboot Timer

[Timer]
OnCalendar=*-*-* 03:00:00
Persistent=true

[Install]
WantedBy=timers.target

其中,OnCalendar 表示定时周期,这里设置为每天的凌晨 3 点执行;Persistent 则表示如果系统在定时任务运行时处于休眠或者关机状态,则会在下次启动后立即执行。

创建一个 service 文件 /etc/systemd/system/reboot.service,并添加以下内容:

扫描二维码关注公众号,回复: 14675754 查看本文章
[Unit]
Description=Reboot Service

[Service]
Type=oneshot
ExecStart=/usr/local/bin/reboot.sh

[Install]
WantedBy=multi-user.target

这里通过 ExecStart 指定了要执行的脚本文件路径,Type 设置为 oneshot 表示执行一次就停止,不会一直执行。同时将 WantedBy 设置为 multi-user.target,表示只有在系统启动时才会运行此服务。

启用 timer 和 service 并重载 systemd 配置:

# systemctl daemon-reload
# systemctl enable reboot.timer
# systemctl start reboot.timer

这样,系统就会按照设定的时间周期自动执行 /usr/local/bin/reboot.sh 脚

猜你喜欢

转载自blog.csdn.net/qq_38428623/article/details/129986024