在 Linux 中实现每分钟自动重启,最专业的做法是借助任务调度工具(cron 或 systemd timer)调用 reboot/shutdown 命令。由于 cron 的最小调度粒度正好是 1 分钟,因此每分钟执行一次是其原生支持的能力。以下给出三种主流方案,按生产环境规范性推荐。

方案一:使用 crontab(最常用、最简洁)
以 root 身份执行 crontab -e,在文件末尾添加一行:
* * * * * /sbin/reboot
五个字段从左到右依次为「分钟 小时 日 月 周」,全部填 * 表示每分钟触发一次。保存退出后即可生效,无需重启 cron 服务。若希望走更规范的关机流程,可写为 * * * * * /sbin/shutdown -r now,两条命令效果等价。
方案二:写入系统级 cron 文件(便于集中管理)
直接编辑 /etc/crontab,或在 /etc/cron.d/ 目录下新建文件(如 /etc/cron.d/reboot-every-minute),内容为:
* * * * * root /sbin/reboot
与 crontab -e 的区别在于:系统级文件需要额外指定执行用户(这里是 root),适合通过配置管理工具(Ansible、Puppet 等)批量下发,且对非交互式部署更友好。
方案三:使用 systemd timer(现代发行版推荐)
systemd timer 是 cron 的现代替代方案,精度更高、可记录日志。创建服务单元 /etc/systemd/system/reboot-minutely.service:
[Unit]
Description=Reboot every minute
[Service]
Type=oneshot
ExecStart=/sbin/reboot
再创建触发单元 /etc/systemd/system/reboot-minutely.timer:
[Unit]
Description=Reboot every minute timer
[Timer]
OnCalendar=*:0/1
Persistent=false
[Install]
WantedBy=timers.target
其中 OnCalendar=*:0/1 表示每分钟的第 0 秒触发。然后执行 systemctl daemon-reload、systemctl enable --now reboot-minutely.timer 启用,用 systemctl list-timers 验证。
验证与排错
执行 systemctl status cron(或 crond.service)确认调度服务正在运行;通过 uptime 或 last reboot 观察系统是否按预期重启;若未生效,检查 /var/log/syslog、/var/log/cron 或 journalctl -u cron 排查。
重要风险提示
每分钟重启是极端操作:系统可能来不及完成启动(fsck 检查、服务拉起、日志回写都需要时间),容易引发日志丢失、文件系统损坏、磁盘 I/O 风暴,云主机还可能触发安全风控。该方案通常仅用于压力测试、重启稳定性验证、故障复现等临时场景,生产环境请谨慎使用,测试完毕后务必执行 crontab -r 或 systemctl disable --now 及时清除计划任务。

查看详情

查看详情