Linux 脚本开机自启配置自动排查及清理清单

一、 核心排查原则

脚本本身无后台运行代码,开机自启的根源是 系统启动配置中存在脚本的执行指令(如 @rebootsystemd 服务rc.local 条目),需逐一排查并删除对应配置。

二、 具体排查与清理步骤

1. 排查 /etc/rc.local/etc/rc.d/rc.local

这是最传统的开机自启配置文件,优先级高。

# 1. 查看文件内容,搜索脚本相关命令
sudo cat /etc/rc.local
sudo cat /etc/rc.d/rc.local

# 2. 若找到如下类似行,直接删除
# nohup /path/to/your_script.sh &
# /path/to/your_script.sh &

# 3. 保存文件后,确保文件有执行权限(非必须,清理后可忽略)
sudo chmod -x /etc/rc.local

2. 排查 systemd 服务(CentOS 7+/Ubuntu 16.04+ 主流)

systemd 是目前 Linux 发行版的默认服务管理器,自启配置以 .service 文件形式存在。

# 1. 全局搜索与脚本相关的 service 文件
sudo find /usr/lib/systemd/system/ /etc/systemd/system/ -name "*.service" | xargs grep -l "/path/to/your_script.sh"

# 2. 假设找到服务文件 your_script.service,执行以下操作
sudo systemctl stop your_script.service    # 停止当前运行的服务
sudo systemctl disable your_script.service # 禁用开机自启
sudo rm -f /etc/systemd/system/your_script.service # 删除服务文件
sudo systemctl daemon-reload              # 重新加载 systemd 配置

3. 排查 crontab 定时任务(@reboot 触发)

crontab 的 @reboot 指令会在系统开机后执行指定脚本。

# 1. 查看当前用户的 crontab 配置
crontab -l

# 2. 查看 root 用户的 crontab 配置
sudo crontab -l

# 3. 若找到如下类似行,执行编辑命令删除
# @reboot /path/to/your_script.sh &
# 编辑当前用户 crontab
crontab -e
# 编辑 root 用户 crontab
sudo crontab -e

4. 排查运行级别软链接(/etc/rc*.d)

部分老系统会通过 /etc/rc*.d 目录下的软链接实现自启,S 开头表示开机启动。

# 1. 搜索所有运行级别下与脚本相关的软链接
ls -l /etc/rc0.d/ /etc/rc1.d/ /etc/rc2.d/ /etc/rc3.d/ /etc/rc4.d/ /etc/rc5.d/ /etc/rc6.d/ | grep -i "your_script.sh"

# 2. 若找到类似 S99your_script 的软链接,直接删除
sudo rm -f /etc/rc3.d/S99your_script.sh
sudo rm -f /etc/rc5.d/S99your_script.sh

5. 排查用户/全局环境变量文件

部分配置会写在用户或全局的 shell 启动文件中。

# 1. 排查当前用户的启动文件
cat ~/.bashrc
cat ~/.bash_profile
cat ~/.profile

# 2. 排查全局用户的启动文件
sudo cat /etc/profile
sudo cat /etc/bashrc

# 3. 若找到脚本执行命令,删除对应行并保存

三、 验证清理结果

完成所有配置清理后,通过以下步骤验证自启功能是否移除:

  1. 重启系统
    1. sudo reboot
      
  2. 检查脚本是否后台运行
    1. # 替换为你的脚本实际名称
      ps -ef | grep "your_script.sh"
      
  3. 判断标准:若仅显示 grep 本身的进程,说明自启配置已清理完成。

四、 额外优化建议

  1. 脚本末尾的 poweroff 指令会导致脚本执行完成后自动关机,若无需此功能可直接删除该行;
  2. 脚本中的 sleep 60/sleep 30 等延时指令,若无需等待可删除以加快脚本执行速度。