Ubuntu 18.04 ps命令丢失修复方案

报错 `Command 'ps' not found` 说明 **procps 软件包被病毒删除/损坏**，ps、top、vmstat 等进程查看工具都在这个包里，分两种场景修复。 

 ## 一、能正常联网（直接安装修复） ### 1. 执行安装恢复procps ```bash apt update apt install -y procps ``` 安装完成后直接测试： ```bash ps -ef ``` 

 ### 2. 如果apt被篡改、无法执行 病毒经常篡改apt、替换源、删除依赖，先修复apt： ```bash # 修复apt基础组件 apt --fix-broken install -y apt install --reinstall apt # 再重装procps apt install --reinstall procps ``` 

 ## 二、服务器断网/外网不通（离线修复） ### 方案1：本地缓存包安装 1. 查看本机是否还有缓存安装包 ```bash ls /var/cache/apt/archives/procps* ``` 如果存在文件，直接本地安装： ```bash dpkg -i /var/cache/apt/archives/procps_*.deb ``` 

 ### 方案2：另一台同版本Ubuntu下载离线包上传 1. 干净Ubuntu18.04机器下载包 ```bash apt update && apt install --download-only procps # 包路径 /var/cache/apt/archives/procps_xxx_amd64.deb ``` 2. scp上传到故障服务器，执行安装 ```bash dpkg -i procps_*.deb # 缺依赖就修复依赖 apt -f install -y ``` 

 ## 三、病毒篡改PATH导致命令找不到（关键排查） 部分恶意程序会修改环境变量`PATH`，即使程序存在也提示not found： 1. 先确认ps二进制文件是否存在 ```bash which ps # 或直接查看真实路径 ls /bin/ps /usr/bin/ps ``` - 若文件不存在：按上面重装procps - 若文件存在但无法执行：修复PATH ```bash # 临时恢复完整PATH export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin # 再次测试ps ps -ef ``` 2. 永久修复PATH（病毒大概率改了/etc/profile /root/.bashrc） ```bash # 检查恶意PATH篡改 grep -r "PATH" /root/.bashrc /etc/profile /etc/environment # 删除里面恶意覆盖PATH的行，恢复默认PATH echo 'export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin' >> /etc/profile source /etc/profile ``` 

 ## 四、修复后深度查杀（防止病毒再次删除工具） ### 1. 全盘查杀病毒 ```bash # 安装云安全中心Agent全盘扫描（阿里云主机） # 或安装clamav开源杀毒 apt install -y clamav freshclam clamscan -r / --remove=yes ``` ### 2. 锁定procps防止被删除 ```bash # 锁定软件包，病毒无法卸载 apt-mark hold procps # 锁定ps二进制文件不可删 chattr +i /usr/bin/ps /bin/ps ``` 

 ### 3. 复盘之前的进程隐藏后门 之前告警是通过`mount --bind /proc/$PID /tmp`隐藏进程，病毒会持续删除系统工具规避排查： 1. 再次检查恶意挂载 ```bash mount | grep /tmp umount -l /tmp ``` 2. 清理定时任务、开机自启木马 ```bash crontab -l ls /etc/cron.* systemctl list-unit-files ``` 3. 加固/tmp目录禁止执行二进制 ```bash mount -o remount,noexec,nosuid /tmp echo "tmpfs /tmp tmpfs defaults,noexec,nosuid 0 0" >> /etc/fstab ``` 

 ## 快速一键修复脚本（复制直接运行） ```bash #!/bin/bash export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin apt update apt --fix-broken install -y apt install --reinstall -y procps apt-mark hold procps chattr +i /usr/bin/ps /bin/ps echo "=== 修复完成，测试ps ===" ps -ef ```