Ubuntu定时重启服务器完整教程:3种方法详解 (2026)

在服务器运维中,定时重启是一项常见的管理需求。无论是释放内存、清理临时文件,还是应用更新后的系统重启,自动化执行都能大幅提升运维效率。本文将详细介绍在Ubuntu系统中设置定时重启的多种方法。


为什么需要定时重启服务器?

服务器长时间运行可能会出现以下问题:

  • 内存泄漏累积:某些程序运行久了会占用大量内存
  • 临时文件堆积:系统临时目录占用过多磁盘空间
  • 系统缓存膨胀:影响整体性能
  • 安全更新未生效:内核更新后需要重启才能生效

定时重启可以有效解决这些问题,保持系统处于最佳运行状态。


方法一:使用 Cron 定时任务(推荐)

Cron是Linux系统中最经典的定时任务工具,配置简单且稳定可靠。

1. 编辑Cron任务

打开终端,输入以下命令:

sudo crontab -e

注意:使用 sudo 确保具有root权限,否则重启命令可能无法执行。

2. 添加定时重启规则

在打开的编辑器末尾添加一行,格式如下:

# 每天凌晨3点重启
0 3 * * * /sbin/shutdown -r now

3. Cron时间格式详解

Cron表达式由5个字段组成:分 时 日 月 星期

字段 取值范围 说明
分钟 0-59 每小时第几分钟执行
小时 0-23 每天几点执行
1-31 每月几号执行
1-12 每年几月执行
星期 0-7 0和7都代表周日

4. 常用时间示例

# 每周日凌晨2点重启
0 2 * * 0 /sbin/shutdown -r now

# 每月1号凌晨4点重启
0 4 1 * * /sbin/shutdown -r now

# 每天中午12:30重启
30 12 * * * /sbin/shutdown -r now

# 每小时重启一次(不推荐生产环境)
0 * * * * /sbin/shutdown -r now

5. 保存并验证

保存退出后,使用以下命令验证任务是否添加成功:

sudo crontab -l

方法二:使用 Systemd Timer

对于使用systemd的现代Ubuntu系统(16.04及以上),可以使用更强大的systemd timer。

1. 创建服务文件

sudo nano /etc/systemd/system/reboot.timer

添加以下内容:

[Unit]
Description=Daily Reboot Timer

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

[Install]
WantedBy=timers.target

2. 创建对应的服务文件

sudo nano /etc/systemd/system/reboot.service

添加以下内容:

[Unit]
Description=Daily Reboot Service

[Service]
Type=oneshot
ExecStart=/sbin/shutdown -r now

[Install]
WantedBy=multi-user.target

3. 启用定时器

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

4. 查看定时器状态

systemctl list-timers

方法三:使用 at 命令(一次性重启)

如果只需要一次性定时重启,可以使用 at 命令。

1. 安装at工具

sudo apt update
sudo apt install at

2. 设置一次性重启

echo "/sbin/shutdown -r now" | sudo at 03:00 tomorrow

3. 查看已设置的任务

sudo atq

4. 删除已设置的任务

sudo atrm 任务号

重启前的注意事项

1. 确保服务已正确关闭

在重启前,建议确保:

  • 数据库已正常关闭或备份
  • 正在进行的文件传输已完成
  • 用户已收到维护通知

2. 添加重启前脚本

可以在重启前执行清理脚本:

# 每天凌晨3点先清理再重启
0 3 * * * /path/to/cleanup.sh && /sbin/shutdown -r now

3. 记录重启日志

# 在crontab中记录重启时间
0 3 * * * echo "System reboot at $(date)" >> /var/log/reboot.log && /sbin/shutdown -r now

常见问题排查

问题1:重启没有执行

可能原因:
– Cron服务未运行
– 命令路径不完整
– 权限不足

解决方法:

# 检查cron服务状态
sudo systemctl status cron

# 使用完整路径
0 3 * * * /sbin/shutdown -r now

问题2:重启后服务未自动启动

解决方法:
确保关键服务已设置开机自启:

sudo systemctl enable nginx
sudo systemctl enable mysql

安全建议

  1. 避开业务高峰期:选择用户活跃度最低的时间段
  2. 提前通知:重要服务重启前通知相关用户
  3. 监控重启过程:配置监控确保系统正常恢复
  4. 测试环境验证:生产环境前先在测试环境验证

总结

Ubuntu定时重启可以通过以下三种方式实现:

方法 适用场景 优点 缺点
Cron 定期重复重启 配置简单、稳定 精确到分钟级
Systemd Timer 现代系统、复杂需求 功能强大、日志完善 配置稍复杂
at 命令 一次性重启 快速便捷 不适合周期任务

根据实际需求选择合适的方法,并做好重启前后的运维准备工作,可以有效维护服务器健康运行。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注