在 CentOS 7 系统中,开机启动项主要分为两种类型:system(系统级)和 user(用户级)。它们的核心区别在于:像 MySQL 这类无需用户登录即可运行的服务属于 system 型,对应的单元文件存放在 /usr/lib/systemd/system 目录下;而必须等待用户登录后才能启动的程序则归为 user 型,路径不同,逻辑也截然不同。
举例来说,假设我们手动编写了一个系统服务,命名为 mytest.service,其文件格式可参照 system 目录下的现有文件。如何让它在开机时自动运行?只需三步:
- 运行
systemctl enable mytest.service—— 启用开机自启。 - 运行
systemctl start mytest.service—— 立即启动该服务。 - 运行
systemctl status mytest.service—— 查看当前状态并确认是否正常运行。
如何查看开机启动项
若想了解系统中哪些服务被设置为开机自启,可使用命令 systemctl list-unit-files。更常见的做法是执行 systemctl list-unit-files --type=service | grep enabled,直接过滤出已启用的服务。此外,systemctl list-units 可查看当前所有单元的状态,两个命令侧重点不同,可根据实际需求灵活选用。
理解这两种启动类型的差异,对于排查开机速度慢、服务冲突等问题非常有帮助。system 类型服务在用户登录前即可完成加载,而 user 类型服务则依赖于用户的登录会话——若混淆了路径,服务可能在您不知情的情况下“罢工”。
