@reboot 是 Linux 系统 cron 定时任务服务的一个特殊指令,用于在系统完成启动后自动执行一次指定的命令或脚本。它提供了一种轻量级、配置简单的开机自启方案,特别适合执行初始化脚本或启动用户级服务。
与传统的 systemd 或 /etc/rc.local 相比,@reboot 具有以下特点:
本文以启动脚本 /u01/mis/server.sh 为例,演示配置流程。
@reboot 配置依赖于 cron 服务。请第一确认它已启用并运行。
# 对于 CentOS/RHEL 系统:
sudo systemctl status crond # 检查状态
sudo systemctl enable --now crond # 设置开机自启并立即启动
# 对于 Ubuntu/Debian 系统:
sudo systemctl status cron # 检查状态
sudo systemctl enable --now cron # 设置开机自启并立即启动您可以选择在用户级别或系统级别进行配置。
方式一:用户级配置(推荐用于个人脚本)
此配置仅对当前用户生效,无需 root 权限。
方式二:系统级配置(推荐用于全局服务)
此配置对所有用户生效,需要 root 权限。
配置完成后,重启系统以测试。
sudo reboot重启后,检查您的脚本是否已成功运行:
ps -ef | grep mis-back.jar # 查看脚本启动的进程
cat /u01/mis/backEnd/logs/server.log # 查看脚本的输出日志1. 任务未执行?
2. 脚本执行后进程退出?
3. 如何查看执行日志?
通过系统日志可以确认 @reboot 任务是否被触发。
# CentOS/RHEL
grep CRON /var/log/cron
# Ubuntu/Debian
grep CRON /var/log/syslog查找包含 @reboot 和您的脚本路径的日志条目。
特性 | cron @reboot | systemd | /etc/rc.local |
配置复杂度 | 极简(一行命令) | 复杂(需编写.service文件) | 简单(编辑文件) |
进程管理 | 无(需自行处理后台) | 强劲(自动重启、监控) | 无 |
通用性 | 高(所有主流Linux) | 仅限 systemd 系统 | 逐渐淘汰 |
适用场景 | 轻量级脚本、用户任务 | 复杂的系统服务 | 传统的简单命令 |
cron 的 @reboot 特性是实现 Linux 开机自启的一种快速、轻量、通用的方案。它超级适合执行简单的初始化任务、启动用户级别的应用或脚本。
不过,对于需要高级管理功能(如自动重启、依赖关系管理、资源控制)的生产环境关键服务,systemd 依旧是更强劲、更可靠的选择。
对于文章中的 server.sh 启动任务,使用 @reboot 是一个完美且高效的解决方案。