脚本陷入自循环的解决方法

问题:脚本开机自启并死循环

在 CentOS 上给 mycat.sh 配置了开机自启后,脚本里又 source 了自己,导致登录时不断递归执行,最终卡死在登录界面,只能进入单用户模式修复。

方法:进入单用户救援模式删除问题脚本

  1. 在 VMware 中重启这台 CentOS 虚拟机。
  2. GRUB 菜单出现的时候,按 e 编辑启动项。
  3. 找到以 linux16 开头的那一行,把里面的 ro 修改成 rw。
  4. 在这一行最后面 ,用空格隔开,追加:init=/sysroot/bin/sh。
  5. 按 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
相关推荐
Java开发追求者1 小时前
windows快速安装docker
windows·docker·安装·1024程序员节
我叫洋洋1 小时前
用 Qoder(AI 编程助手)把 Cadence 16.6 从零配到能画板
人工智能·单片机·嵌入式硬件·电路·1024程序员节
ai_coder_ai1 小时前
自动化脚本最佳实践
1024程序员节
坐吃山猪1 小时前
Godot01-初体验
godot·1024程序员节
EnCi Zheng2 小时前
PostgreSQL 实战指南:安装配置、数据类型、索引选型、MVCC 事务与高可用备份全解析
数据库·sql·postgresql·索引·1024程序员节
choumin2 小时前
C++ std::bind的作用和用法
1024程序员节·std bind·函数参数绑定
流浪0012 小时前
计算机网络篇8:传输层——序列化与反序列化,TCP 面向字节流的报文边界由应用层自己切
网络协议·tcp/ip·计算机网络·1024程序员节·序列化反序列化·面向字节流·面向数据包
职豚求职小程序刷题2 小时前
中国旅游集团27校招在线测评攻略(附练习题库)
1024程序员节
淡淡的香烟2 小时前
Flutter实现多语言切换
android·flutter·1024程序员节