推荐方法(适用于systemd系统)
查看所有开机自启的服务:
systemctl list-unit-files --type=service --state=enabled
简洁版(过滤显示):
systemctl list-unit-files --type=service | grep enabled
查看特定服务是否开机自启:
传统方法(适用于SysVinit系统)
查看所有服务的启动状态:
仅查看开机自启的服务:
chkconfig --list | grep '3:on'
补充说明
-
systemctl是现代Linux发行版(如CentOS 7+、Ubuntu 16.04+)的推荐工具
-
chkconfig适用于较旧的系统(如CentOS 6)
-
输出结果中,enabled或on表示服务会在系统启动时自动运行
如何查看服务的历史启动日志
journalctl -u 服务名.service --since "重启前的时间"
# 例如
journalctl -u nginx.service --since "2026-01-14 10:00:00"
@reboot是 crontab 中的一个特殊时间字符串,表示在系统每次启动(重启)时自动执行指定的命令。
具体含义:
- 执行时机:系统完成启动过程后,crontab 服务启动时
- 相当于:0 0 0 0 0这样的时间表达式,但语义更清晰
@reboot [ -f /usr/local/gse/agent/bin/gsectl.sh ] && /usr/local/gse/agent/bin/gsectl start >/var/log/gse_start.log 2>&1
其他类似的时间宏:
-
@yearly或 @annually:每年一次(1月1日 00:00)
-
@monthly:每月一次(每月1日 00:00)
-
@weekly:每周一次(周日 00:00)
-
@daily或 @midnight:每天一次(00:00)
-
@hourly:每小时一次
- @reboot :每次启动/重启时执行