答案:查看Linux服务开机自启需先判断初始化系统类型。使用ps -p 1确认是systemd还是SysVinit。若为systemd,执行systemctl is-enabled 服务名.service,返回enabled表示已启用;可结合systemctl list-unit-files --type=service | grep enabled查看所有自启服务。若为SysVinit,使用chkconfig --list 服务名查看运行级别状态,或检查/etc/rc.d/rc.local是否有启动命令。还可通过ps aux | grep 服务名确认运行状态,或查看/etc/systemd/system/multi-user.target.wants/目录软链接及crontab @reboot任务辅助判断。

在Linux系统中,查看某个服务是否设置为开机自启,主要取决于你使用的系统初始化方式。目前主流的是systemd(大多数现代发行版如CentOS 7+、Ubuntu 16.04+、Debian 9+等),也有部分旧系统使用SysVinit。以下是常用的方法。
使用systemctl命令(适用于systemd系统)
如果你的系统使用systemd,可以通过systemctl命令来查看服务的自启动状态。
-
查看某个服务是否开机自启:
systemctl is-enabled 服务名.service
例如:systemctl is-enabled sshd.service
返回 enabled 表示已设置开机自启,disabled 表示未启用。 -
列出所有开机自启的服务:
systemctl list-unit-files --type=service | grep enabled -
查看服务当前运行状态(是否正在运行):
systemctl status 服务名.service
传统SysVinit系统(较老版本Linux)
对于仍在使用SysVinit的系统,可以使用chkconfig或直接查看/etc/rc.d/rc.local等脚本。
-
使用chkconfig查看:
chkconfig --list 服务名
例如:chkconfig --list httpd
查看对应运行级别下是否标记为“on”。 -
查看rc.local(部分服务手动添加):
打开文件:cat /etc/rc.d/rc.local 或 /etc/rc.local,检查是否有启动服务的命令。
通用方法:结合ps与开机脚本辅助判断
如果不确定初始化类型,也可以通过以下方式辅助判断:
- 用ps aux | grep 服务名确认服务当前是否在运行。
- 检查是否有自定义启动脚本写入crontab -l(如@reboot任务)。
- 查看/etc/systemd/system/multi-user.target.wants/目录下的软链接,存在即表示该服务被设为开机启动。
基本上就这些。大多数情况下,systemctl is-enabled 服务名就能快速判断服务是否开机自启。确认你的系统使用systemd还是SysVinit是关键。输入ps -p 1可查看进程1是systemd还是init,从而判断初始化系统类型。










