排查不存在的 (文件)start.sh 脚本自动重启问题

你遇到的情况是一个指向不存在路径(/usr/local/bin/start.sh)的进程在自动重启,这很可能是恶意程序或配置错误。以下是详细的排查步骤: 1. 首先验证脚本真实路径 虽然路径显示为 /usr/local/...

你遇到的情况是一个指向不存在路径(/usr/local/bin/start.sh)的进程在自动重启,这很可能是恶意程序或配置错误。以下是详细的排查步骤:

1. 首先验证脚本真实路径

虽然路径显示为 /usr/local/bin/start.sh,但实际上可能已被删除或隐藏:


# 检查文件是否真的不存在
ls -la /usr/local/bin/start.sh

# 检查文件是否被删除但仍被进程持有
sudo lsof +L1 | grep start.sh

2. 追踪进程启动来源

方法一:通过进程树查找父进程


# 查找4505进程的父进程
pstree -aps 4505

# 或使用
cat /proc/4505/status | grep PPid

attachments-2025-08-m4GWElHg689c768f6706a,png可以看到4405 Ppid 为4480,一旦4405被杀掉,自动重启应该是4480所为,经查,4480为一个docker服务,启动的时候参数为:

attachments-2025-08-joUehyxW689c773ec9e14,png

启动参数中有  --restart always 参数,说明一旦容器停止docker服务器会自动把它拉起。

方法二:使用auditd监控exec调用


# 安装auditd(如未安装)
sudo apt install auditd  # Debian/Ubuntu
sudo yum install audit  # RHEL/CentOS

# 监控所有execve调用
sudo auditctl -a exit,always -F arch=b64 -S execve

3. 检查系统服务


# 检查系统服务
systemctl list-units --all | grep -i "start"

# 检查init.d服务
ls -la /etc/init.d/ | grep -i "start"

# 检查systemd服务文件
sudo grep -r "/usr/local/bin/start.sh" /etc/systemd/

4. 检查定时任务


# 检查系统cron
sudo ls -la /etc/cron*/*
sudo grep -r "/usr/local/bin/start.sh" /etc/cron*

# 检查用户cron
sudo ls -la /var/spool/cron/crontabs/

5. 检查其他自动启动机制


# 检查rc.local
cat /etc/rc.local

# 检查profile和bashrc
sudo grep -r "/usr/local/bin/start.sh" /etc/profile.d/ /etc/bash.bashrc ~/.bashrc ~/.profile

# 检查supervisor配置(如安装)
sudo grep -r "/usr/local/bin/start.sh" /etc/supervisor/

6. 检查内存中的进程信息


# 查看进程打开的文件
ls -la /proc/4505/fd

# 查看进程环境变量
cat /proc/4505/environ | tr '\0' '\n'

# 查看进程命令行参数
cat /proc/4505/cmdline | tr '\0' ' '

7. 高级排查技巧

如果以上方法找不到:

  1. 检查内核模块


    lsmod
  2. 检查LD_PRELOAD


    cat /proc/4505/maps
    cat /proc/4505/environ | grep LD_PRELOAD
  3. 使用strace跟踪


    sudo strace -p 4505 -f

8. 临时解决方案

在找到根源前可以先:


# 阻止脚本执行
sudo touch /usr/local/bin/start.sh
sudo chmod 000 /usr/local/bin/start.sh
sudo chattr +i /usr/local/bin/start.sh

# 或重命名父进程二进制(谨慎操作)

安全建议

  1. 检查系统是否有其他可疑进程

  2. 考虑运行rootkit检查工具:


    sudo apt install rkhunter
    sudo rkhunter --check
  3. 检查系统日志:


    journalctl -xe
    grep -i "start.sh" /var/log/*
  • 发表于 2025-08-13 19:21
  • 阅读 ( 19 )

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
shitian
shitian

662 篇文章

作家榜 »

  1. shitian 662 文章
  2. 石天 437 文章
  3. 每天惠23 33 文章
  4. 小A 29 文章