Linux服务自启动配置排查
1. 检查 systemd 服务(主要方式)
列出所有已启用的服务(开机自启动)systemctl list-unit-files --type=service --state=enabled
查找特定服务的状态(替换 YOUR_SERVICE_NAME)systemctl status YOUR_SERVICE_NAME.service
关键位置
服务配置文件:/usr/lib/systemd/system/
(系统级)或 /etc/systemd/system/
(自定义配置)
启用链接:/etc/systemd/system/*.wants/
目录下的软链接
2. 检查 SysVinit 脚本(旧系统)
若服务未通过 systemd 管理
列出所有 chkconfig 管理的服务chkconfig --list
查找 /etc/init.d/ 目录下的脚本ls -l /etc/init.d/
关键位置
启动脚本:/etc/init.d/
目录
符号链接:/etc/rc.d/rc\[0-6].d/
(如 S99service 表示启动,K01service 表示关闭)
3. 检查 rc.local(简单启动命令)
若服务是通过启动命令实现的cat /etc/rc.d/rc.local
注意
确保 rc.local
有执行权限:chmod +x /etc/rc.d/rc.local
systemd 服务需启用:systemctl enable rc-local.service
4. 检查定时任务(cron)
服务可能通过 @reboot 定时任务启动
检查系统级 cron
cat /etc/crontab
ls /etc/cron.d/
检查用户级 cron
crontab -l -u root # root 用户
crontab -l -u YOUR_USER # 其他用户
5. 检查进程启动来源
若已知服务进程名
通过进程名反查服务
pstree -asp $(pgrep YOUR_PROCESS_NAME)
观察父进程树,可能追溯到启动脚本或服务管理器
6. 使用日志工具
通过系统日志追踪启动过程
journalctl -b -0 | grep -i "startup\|service\|YOUR_KEYWORD"
# 或
grep "启动的服务名" /var/log/messages