问题:脚本开机自启并死循环
在 CentOS 上给 mycat.sh 配置了开机自启后,脚本里又 source 了自己,导致登录时不断递归执行,最终卡死在登录界面,只能进入单用户模式修复。
方法:进入单用户救援模式删除问题脚本
- 在 VMware 中重启这台 CentOS 虚拟机。
- GRUB 菜单出现的时候,按
e编辑启动项。 - 找到以
linux16开头的那一行,把里面的 ro 修改成 rw。 - 在这一行最后面 ,用空格隔开,追加:
init=/sysroot/bin/sh。 - 按
Ctrl + x进入救援 shell。
修改完后的整行末尾示例:
...rhgb quiet LANG=zh_CN.UTF-8 init=/sysroot/bin/sh
⚠️ 不要删别的参数,只改 ro→rw、末尾加 init 那一段!
进去之后依次敲下面命令
chroot /sysroot
rm -f /etc/profile.d/mycat.sh
exit
reboot
重启之后,登录死循环问题就修复了。
原理补充
- ro 与 rw:ro = read-only 只读;rw = read-write 读写,不改 rw 删不了文件。
- init=/sysroot/bin/sh:跳过正常登录流程,直接进 shell,不会触发 profile.d 里面那个死循环脚本。
修复后重写 mycat.sh
改完重启成功后,重新写 mycat.sh,脚本里只能放 export,绝对不要再写 source 自己。
export MYCAT_HOME=/usr/local/mycat
export PATH=$MYCAT_HOME/bin:$PATH