VPS 突然卡死或 CPU 飙升是运维中最头疼的事,手动排查 Linux 进程异常往往耗时费力。这时候引入 AI Agent 自动识别高占用进程和可疑服务,能极大提升效率。主机选今天分享一套实战方案,从传统命令行排查过渡到利用 AI 工具自动化分析,帮你快速定位挖矿病毒或失控的代码进程。

传统 Linux 进程异常排查命令实战
在引入 AI 之前,必须掌握基础命令。如果连 `top` 都看不懂,AI 给出的建议你也无法执行。这些命令是系统底层的“听诊器”。
使用 top 和 htop 锁定高占用进程
第一时间登入服务器,别急着重启,先看负载。输入 `top` 后,关注 `%CPU` 和 `%MEM` 两列。
top
如果觉得 `top` 界面不够直观,安装 `htop`。它支持鼠标操作,颜色区分明显,能一眼看出哪个进程在“吃”资源。
apt install htop -y
yum install htop -y
追踪进程真实路径与文件指纹
看到高占用进程的 PID 后,比如 1234,别急着下手。先确认它是不是系统合法进程。挖矿病毒通常伪装成系统进程名,但路径往往藏得很深。
ps -fp 1234
ls -l /proc/1234/exe
lsof -p 1234
如果路径在 `/tmp`、`/var/tmp` 或者 `/dev/shm` 下,且名字是一串随机字符,大概率是恶意程序。这时候再去查杀毒或清理。
AI Agent 自动识别高占用进程与可疑服务
人工排查适合单台服务器,手头如果有几十台 VPS,或者你是自动化运维爱好者,就得用 AI Agent 代劳了。核心思路是:脚本采集数据 -> 发送给 LLM -> AI 判断是否异常 -> 返回处置建议。
Python 脚本采集系统快照数据
不要试图让 AI 直接登录你的服务器,这不安全。写个简单的 Python 脚本,利用 `psutil` 库抓取当前资源占用 Top 5 的进程信息。
pip install psutil openai
编写 `monitor.py`:
python
import psutil
import json
def get_top_processes():
processes = []
for proc in psutil.process_iter(['pid', 'name', 'cpu_percent', 'memory_percent', 'cmdline']):
try:
processes.append(proc.info)
except (psutil.NoSuchProcess, psutil.AccessDenied):
continue
processes.sort(key=lambda p: p['cpu_percent'], reverse=True)
return processes[:5]
if __name__ == "__main__":
data = get_top_processes()
print(json.dumps(data, indent=2))
运行这个脚本,你会得到一段标准的 JSON 数据,这是 AI 最喜欢的“食物”。
调用 LLM API 进行智能日志分析
拿到 JSON 后,通过 HTTP 请求发给支持 OpenAI 接口的大模型(如 DeepSeek、Claude 或 GPT-4)。Prompt 的编写决定了排查的质量。
python
from openai import OpenAI
client = OpenAI(api_key="你的_API_Key", base_url="https://api.deepseek.com") # 示例
def analyze_with_ai(process_data):
prompt = f"""
我是一台 Linux 服务器运维人员。以下是目前 CPU 占用最高的 5 个进程列表:
{process_data}
请帮我分析:
1. 这些进程中是否有可疑的挖矿程序或恶意软件?
2. 是否有非必要的业务进程导致资源耗尽?
3. 如果有异常,请给出具体的 PID 和建议的操作(如 kill 或检查日志)。
请用简练的技术语言回答。
"""
response = client.chat.completions.create(
model="deepseek-chat",
messages=[
{"role": "system", "content": "你是一个资深的 Linux 运维专家。"},
{"role": "user", "content": prompt}
]
)
return response.choices[0].message.content
data = get_top_processes()
analysis = analyze_with_ai(json.dumps(data))
print(analysis)
AI 能识别出常见的挖矿进程名(如 `xmrig`、`minerd`)或者异常的 Python 脚本,并告诉你该不该杀。
n8n 部署自动化进程监控工作流
如果你不想写代码,或者需要可视化的工作流,n8n 是个绝佳选择。它可以定时执行 SSH 命令,然后调用 AI 节点分析,最后发邮件或 Telegram 通知你。
配置 Cron 定时与 SSH 命令执行
在 n8n 中创建一个 Workflow。
1.Trigger 节点:选择 `Schedule Trigger`,设置为每 5 分钟或每 10 分钟执行一次。
2.SSH 节点:配置你的 VPS 连接信息(IP、端口、私钥)。
3.Command:在 SSH 节点中执行:
ps -eo pid,ppid,cmd,%mem,%cpu –sort=-%cpu | head -n 6
这条命令能直接输出格式化好的进程信息。
结合 AI Agent 进行决策与告警
1.HTTP Request或OpenAI Node:将 SSH 节点的输出传给 AI Agent。Prompt 可以设置为:“作为安全专家,分析以下 Linux 进程列表,判断是否存在安全风险或资源滥用。如果是,回复 'ALERT: 原因';如果正常,回复 'OK'。”
2.IF 节点:判断 AI 的返回内容。如果包含 `ALERT`,则走 `True` 分支。
3.通知节点:在 `True` 分支接入 Telegram 或 Email 节点,把 AI 的分析报告直接发到你手机上。
这样,你不需要盯着屏幕,服务器一旦有异常,AI Agent 会第一时间当你的“网管”。
老鸟叮嘱
1.权限最小化:脚本和 n8n 连接服务器时,尽量使用普通账号而非 root,配合 sudo 配置白名单命令。
2.API Key 安全:不要把 API Key 硬编码在脚本里,使用环境变量存储。
3.警惕误杀:AI 有时会误判数据库备份或高并发计算为异常,收到告警后先人工确认再执行 `kill`。
4.日志留存:AI 分析的结果建议存入数据库或文件,方便事后复盘攻击来源。
5.网络连接:排查进程时,不仅要看 CPU,还要结合 `ss -tulnp` 看外连情况,很多病毒不占 CPU 但疯狂发包。
FAQ
Q:Linux 进程异常排查,除了 top 还有什么好用的工具?
A:推荐 `atop`,它不仅能记录实时状态,还能回看历史快照,非常适合排查间歇性故障。另外 `glances` 也是个不错的全能工具。
Q:AI Agent 分析进程准确吗?会不会误报?
A:对于已知的挖矿程序特征和异常路径,AI 识别率很高;但对于业务代码的死循环,它只能判断资源占用异常,无法确定是否为业务逻辑问题,需要人工二次确认。
Q:n8n 连接 VPS 需要开放什么端口?
A:n8n 是作为客户端去连接 VPS 的 SSH 端口(默认 22),不需要在 VPS 上开放额外的入站端口,也不需要放行 n8n 服务器的端口,这样比较安全。
Q:服务器内存很小,跑 AI 分析脚本会不会卡死?
A:脚本本身(如 `psutil`)资源消耗极低。如果是调用本地大模型(如 Ollama)分析,那肯定需要大内存;建议调用云端 API,只传输文本数据,对 VPS 压力几乎为零。
Q:发现可疑进程 kill 后又自动启动怎么办?
A:说明有守护进程(Cron 或 Systemd)在拉起它。查 `/var/spool/cron/` 和 `/etc/systemd/system/`,找到对应的任务文件并删除,或者用 `chattr +i` 锁定关键文件防止再次被写。
利用传统命令配合 AI Agent 的自动化分析,能将运维效率提升一个台阶。手动查日志是基本功,而让 AI 帮你盯着服务器,则是现代运维的正确打开方式。
转载请注明出处:https://www.zhujixuan.com/jishujiaocheng/10102.html 商家投稿邮箱:zhujixuanblog@qq.com
