游客
2026必学!VPS定时关机重启3步搞定

2026必学!VPS定时关机重启3步搞定

一言准备中...

VPS怎么设置定时关机重启?这份实操指南请收好

玩VPS的老铁都知道,服务器跑久了,内存占用、进程残留、缓存堆积都容易导致性能下滑。尤其是跑爬虫、建站或科学上网的小鸡,定期重启一下往往能解决很多玄学问题。但总不能每天半夜自己爬起来敲reboot吧?今天我就把自己的实操经验分享给你们,手把手教你在VPS上设置定时关机或重启,顺便避几个坑。

一、先搞清楚需求:定时关机 vs 定时重启

  • 定时重启:最常见。比如每天凌晨4点自动reboot,释放内存、重启服务。
  • 定时关机:使用场景少,比如你只工作日用VPS,周末想关机省电(虽然VPS一直跑着也不贵),或者需要维护硬盘。

大多数情况下,我们只需要定时重启。下面以Linux系统(CentOS/Ubuntu/Debian)为例,讲两种最实用的方法。

二、最主流的方案:Crontab + shutdown/reboot

crontab是Linux自带的定时任务工具,轻量可靠,几乎所有的VPS都预装了。我用的沐雨云服务器预装的CentOS 7系统,亲测稳定运行一年没出过问题。

第一步:SSH登录你的VPS

ssh root@你的IP

第二步:编辑crontab

crontab -e

如果你第一次运行,会问用哪个编辑器,选vimnano都行。我习惯用vim(按i进入编辑模式)。

第三步:写入定时任务

比如我要每天凌晨4点整自动重启

0 4 * * * /sbin/reboot

如果想每周日凌晨3点自动关机(注意shutdown -h now是立即关机,但定时任务会在指定时间执行):

0 3 * * 0 /sbin/poweroff
# 或者用 /sbin/shutdown -h now

特别提醒

  • 命令一定要写绝对路径!可以用which reboot查看路径,一般是/sbin/reboot/usr/sbin/reboot
  • 时间格式:分钟 小时 日 月 星期*代表所有,0 4 * * *就是每天4:00。
  • 不要写成0 4 1,15 * *这样(每月1号和15号4点重启),避免误操作。

写完后按ESC,输入:wq保存退出。你会看到crontab: installing new crontab,表示成功。

第四步:验证定时任务是否生效

crontab -l   # 查看所有任务

如果你不放心,可以临时设置一个几分钟后的任务测试,比如:

# 先测试:3分钟后重启(注意当前时间)
*/3 * * * * /sbin/reboot

但是千万别直接生产环境测试,万一没改了代码,服务器真的重启了你都不知道。建议先设置一个非重启的命令测试,比如:

*/5 * * * * /bin/echo "test" >> /tmp/cronlog.txt

然后等5分钟,看看/tmp/cronlog.txt有没有内容。如果文件生成了,说明crontab正常工作,再把那行删掉,换上真正的重启命令。

三、进阶方案:Systemd定时器(更可靠,但复杂)

有些老哥觉得crontab不够精准,或者想用日志管理。其实crontab够了,但如果你有更复杂的场景(比如重启前先执行脚本备份),可以考虑systemd timer。

这里不展开讲,只给个简单例子:

  1. 创建服务文件 /etc/systemd/system/reboot.service

    [Unit]
    Description=Daily Reboot
    [Service]
    Type=oneshot
    ExecStart=/sbin/reboot
  2. 创建定时器文件 /etc/systemd/system/reboot.timer

    [Unit]
    Description=Daily Reboot Timer
    [Timer]
    OnCalendar=daily
    Persistent=true
    [Install]
    WantedBy=timers.target
  3. 启动并启用:

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

优点:可以配合journalctl查看日志。缺点:步骤多,新手容易搞混。我个人还是推荐crontab

四、那些容易踩的坑(干货预警)

坑1:时区不对,任务时间跑偏

很多VPS默认时区是UTC(0时区),而你潜意识里用的是北京时间(+8)。如果你设置凌晨4点,实际执行是北京时间中午12点。必须检查时区

timedatectl
# 或者 date

如果是UTC,改成本地时区:

timedatectl set-timezone Asia/Shanghai   # 国内朋友推荐

特别注意crontab使用的是系统时区,改完时区后之前写的crontab任务会自动按新时区执行。

坑2:命令写错,永不执行

比如把/sbin/reboot写成rebootcrontab环境变量里可能找不到路径,任务静默失败。一定要写绝对路径

坑3:忘记加/sbin/,或者写错命令

比如/sbin/shutdown -r now是立即重启,不能用于定时(因为立即执行,定时失效)。正确的定时重启命令是/sbin/reboot/sbin/shutdown -r +0

坑4:多个任务混在一起,导致冲突

如果你同时设置了定时关机又设置了定时重启,时间重合时先执行哪个?可能关机了就不会重启了。建议只设一个定时重启,关机场景极少用。

坑5:VPS面板自带了定时任务功能

有些云服务商(比如沐雨云)的控制面板也提供了“定时重启”选项,但我实测发现,面板重启后可能默认是软重启,不如crontabreboot命令彻底。而且面板的定时功能往往只能精确到小时,不能自定义分钟。所以建议系统内用crontab,更灵活稳定

五、实用范例:完整配置脚本

下面是我在实际使用的一段crontab,适用于沐雨云VPS(CentOS 7),每天清理内存后重启:

# 每天凌晨4:00重启
0 4 * * * /sbin/reboot

如果你还想在重启前执行一些清理命令(比如清日志),可以编写一个脚本:

#!/bin/bash
# /root/reboot_clean.sh
journalctl --vacuum-size=100M   # 限制日志大小
echo > /var/log/messages          # 清空messages
/sbin/reboot

然后crontab里写:

0 4 * * * /bin/bash /root/reboot_clean.sh

记得给脚本执行权限:chmod +x /root/reboot_clean.sh

六、个人推荐与总结

设置定时重启这事,说起来简单,但不少新手因为时区、路径等问题折腾半天。如果你是第一次搞,建议按以下步骤:

  1. 先改时区(timedatectl set-timezone Asia/Shanghai
  2. 测试crontab是否工作(echo "test"
  3. 再写上真正的重启命令
  4. crontab -l确认无误

至于VPS的选择,我目前主力用的就是沐雨云服务器。他们家VPS的稳定性让我很放心,crontab任务从来没有因为系统问题而漏执行过。而且控制面板支持一键重装系统、切换Linux发行版,对新手很友好。如果你正在找一台稳定、性价比高的小鸡,可以试试:

沐雨云服务器官网: https://www.muyuyun.cn

最后啰嗦一句:定时重启虽好,但别太频繁。每天一次足够,有些业务甚至一周一次即可。频繁重启反而会增加硬盘读写负担。如果你有重要进程在跑,记得先做好服务自启动(比如systemctl enable),这样重启后服务会自动恢复,不影响业务。

  • 本文作者:站长
  • 本文链接: https://www.zhujishice.cn/vpszs/523.html
  • 版权声明:本博客所有文章除特别声明外,均默认采用 CC BY-NC-SA 4.0 许可协议。
0
0
  • 支付宝打赏
    支付宝扫一扫
  • 微信打赏
    微信扫一扫
感谢支持
文章很赞!支持一下吧
关于作者
376
0
0
0
内卷太严重,已躺平...

2026美国服务器IP被墙?3步教你快速换IP!

上一篇

2026独立服务器:租用vs托管,哪个更省钱?

下一篇
评论区
内容为空

这一切,似未曾拥有

  • 复制图片
按住ctrl可打开默认菜单