[架构之美]linux常见故障问题解决方案(十九)

[架构之美]linux下常见故障问题解决方案

一,文本文件忙

问题一:root@wh-VMware-Virtual-Platform:/home/hail# cp /root/containerd/bin/* /usr/bin/
cp: 无法创建普通文件 ‘/usr/bin/containerd’: 文本文件忙

在Linux系统中遇到“文本文件忙”错误时,通常是因为目标文件正在被进程占用。以下是分步解决方案:

现象截图:

在这里插入图片描述

1.1 问题原因分析

错误 cp: 无法创建普通文件 '/usr/bin/containerd': 文本文件忙 表明:

  • 目标文件 /usr/bin/containerd 正在被系统进程占用。
  • 该文件可能属于正在运行的容器运行时服务(如 containerddocker)。

1.2 解决方案步骤

1. 确认占用文件的进程

使用 lsoffuser 命令查找正在使用文件的进程:

sudo lsof /usr/bin/containerd
# 或
sudo fuser -v /usr/bin/containerd
2. 停止相关服务

停止正在使用 containerd 的服务(按顺序操作):

# 停止 Docker(如果使用)
sudo systemctl stop docker# 停止 Containerd
sudo systemctl stop containerd# 确保进程终止(强制清理)
sudo pkill -9 containerd
3. 复制文件

确认服务停止后,重新执行复制命令:

sudo cp /root/containerd/bin/* /usr/bin/
4. 重启服务

复制完成后恢复服务:

sudo systemctl start containerd
sudo systemctl start docker  # 如果之前停止了 Docker

1.3 附加说明

  • 内核锁定问题:某些情况下,即使服务已停止,内核仍可能锁定文件。此时可重启系统或使用 cp --remove-destination 覆盖:
    sudo cp --remove-destination /root/containerd/bin/* /usr/bin/
    
  • 安全模式操作:如果仍无法替换,可尝试进入单用户模式或使用 LiveCD 环境操作。

1.4 命令总结

# 1. 检查进程占用
sudo lsof /usr/bin/containerd# 2. 停止服务
sudo systemctl stop docker containerd
sudo pkill -9 containerd# 3. 强制复制
sudo cp --remove-destination /root/containerd/bin/* /usr/bin/# 4. 重启服务
sudo systemctl start containerd docker

解决截图:

在这里插入图片描述

二,域名解析错误

root@wh-VMware-Virtual-Platform:~# ping www.baidu.com
ping: www.baidu.com: 域名解析出现暂时性错误
root@wh-VMware-Virtual-Platform:~#

现象截图:

在这里插入图片描述

以下是一些可能的原因和解决方法:

2.1 DNS 服务器配置问题

  • 原因:DNS 服务器可能没有正确配置,或者当前的 DNS 服务器无法解析 www.baidu.com
  • 解决方法
    1. 检查当前系统的 DNS 设置。你可以通过以下命令查看当前的 DNS 配置:

      cat /etc/systemd/resolved.conf
      

      如果发现 DNS 服务器地址不正确或不可用,可以手动修改为可靠的 DNS 服务器,例如 Google 的公共 DNS(8.8.8.8 和 8.8.4.4)或阿里云的公共 DNS(223.5.5.5 和 223.6.6.6)。

    2. 修改 /etc/systemd/resolved.conf 文件,添加以下内容:

      DNS=8.8.8.8 8.8.4.4
      
    3. 保存文件后, 重启 systemd-resolved 服务 ,再次尝试 ping

      sudo systemctl restart systemd-resolved
      

​ 解决截图:

在这里插入图片描述

2.2 网络连接问题

  • 原因:你的网络连接可能不稳定,或者网络配置有问题。
  • 解决方法
    1. 检查网络连接是否正常。尝试 ping 本地网关或其他已知的 IP 地址,例如:
      ping -c 4 8.8.8.8
      
      如果无法成功,说明网络连接可能有问题。
    2. 检查网络配置文件(如 /etc/network/interfaces/etc/netplan/*.yaml),确保网络配置正确。
    3. 如果是通过 DHCP 自动获取 IP 地址,尝试重启网络服务:
      sudo systemctl restart networking
      
      或者重启网络管理器:
      sudo systemctl restart NetworkManager
      

2.3 防火墙或安全组限制

  • 原因:防火墙或安全组可能阻止了 DNS 查询或 ICMP(ping)请求。
  • 解决方法
    1. 检查系统防火墙规则。你可以使用以下命令查看防火墙状态:
      sudo ufw status
      
      如果防火墙处于活动状态,确保允许 DNS 查询(UDP 端口 53)和 ICMP 流量。
    2. 如果你在虚拟机中运行,检查虚拟机的网络设置和宿主机的防火墙规则。

2.4 DNS 缓存问题

  • 原因:本地 DNS 缓存可能损坏或过期。
  • 解决方法
    1. 清除本地 DNS 缓存。在 Linux 系统中,可以尝试以下命令:
      sudo systemctl restart nscd
      
      或者:
      sudo systemctl restart NetworkManager
      
    2. 再次尝试 ping

三,卸载pcre

3.1 卸载通过 apt 安装的 PCRE

运行以下命令卸载系统中通过 apt 安装的 PCRE:

sudo apt remove --purge libpcre3 libpcre3-dev

这将删除所有与 PCRE 相关的包及其配置文件。

3.2 确认卸载成功

运行以下命令确认 PCRE 是否已被完全卸载:

pcre-config --version

如果系统提示 没有那个文件或目录,说明 PCRE 已被成功卸载。

在这里插入图片描述

四,openrsty

root@wh-VMware-Virtual-Platform:~/apisix-offline/apisix/apisix-3.12.0# openresty -v
openresty: symbol lookup error: openresty: undefined symbol: lua_getexdata
# 删除旧版OpenResty
sudo rm -rf /usr/local/openresty# 清理可能的残留库
sudo rm -f /usr/local/lib/libluajit-*.so*# 检查全局环境变量(确保无旧路径)
echo $LD_LIBRARY_PATH  # 如有旧路径,需修改~/.bashrc或/etc/profile#清除后重新安装

4.1 解决 APISIX 安装时的 GPG 公钥错误

此错误是由于 APT 软件源缺少 Docker 官方仓库的 GPG 公钥导致。以下是详细修复步骤:

1. 添加缺失的 Docker GPG 公钥
# 直接下载并安装 Docker 官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/docker.gpg# 设置密钥文件权限
sudo chmod 644 /etc/apt/trusted.gpg.d/docker.gpg
2. 修正软件源配置

检查 /etc/apt/sources.list.d/ 目录下的 Docker 源文件(如 docker.list),确认其指向 华为云镜像源 时使用正确的密钥配置:

# 示例:华为云 Docker CE 镜像配置
echo "deb [arch=amd64 signed-by=/etc/apt/trusted.gpg.d/docker.gpg] https://repo.huaweicloud.com/docker-ce/linux/ubuntu noble stable" | sudo tee /etc/apt/sources.list.d/docker.list
3. 清除并更新 APT 缓存
# 清理旧缓存
sudo rm -rf /var/lib/apt/lists/*# 强制更新
sudo apt update --allow-insecure-repositories
4. 修复 APISIX 依赖安装

重新执行 APISIX 的依赖安装命令:

cd apisix-3.12.0
make deps

4.2关键问题解析

问题原因解决方案作用说明
缺少 Docker 仓库公钥手动下载并安装 GPG 密钥验证软件包签名合法性
镜像源签名配置错误在源配置中显式指定 signed-by 路径明确关联密钥与仓库
APT 缓存污染强制清理并更新缓存确保获取最新元数据

4.3验证修复结果

# 检查 Docker 源状态
sudo apt update 2>&1 | grep "docker-ce"# 预期输出应无 GPG 错误,显示仓库可更新:
# Get:1 https://repo.huaweicloud.com/docker-ce/linux/ubuntu noble InRelease [2,854 B]

4.4备选方案:跳过 GPG 验证(不推荐)

若紧急情况下需临时绕过验证(生产环境禁用):

# 修改源配置为信任仓库
echo "deb [trusted=yes] https://repo.huaweicloud.com/docker-ce/linux/ubuntu noble stable" | sudo tee /etc/apt/sources.list.d/docker.list
sudo apt update

4.5 附录:Docker 官方源配置参考

# 标准 Docker 官方源(非镜像)
echo "deb [arch=amd64 signed-by=/etc/apt/trusted.gpg.d/docker.gpg] https://download.docker.com/linux/ubuntu noble stable" | sudo tee /etc/apt/sources.list.d/docker.list

五,docker拉取镜像超时

# 查看 containerd 是否正在运行
sudo systemctl status containerd# 如果未运行,启动服务并设置开机自启
sudo systemctl start containerd
sudo systemctl enable containerd

5.1 问题分析

Docker 在尝试拉取镜像时无法连接到 containerd 服务(底层容器运行时),导致超时错误。常见原因包括:

  • containerd 未运行:服务未启动或崩溃。
  • 权限问题:用户或 Docker 无权限访问 containerd.sock
  • 资源不足:系统资源(如磁盘空间、内存)耗尽。
  • 配置错误:Docker 或 containerd 的配置损坏。

5.2 逐步解决方案

1. 检查 containerd 服务状态
# 查看 containerd 是否正在运行
sudo systemctl status containerd# 如果未运行,启动服务并设置开机自启
sudo systemctl start containerd
sudo systemctl enable containerd
2. 验证 containerd.sock 文件权限
# 检查 socket 文件是否存在
ls -l /run/containerd/containerd.sock# 预期权限示例(所属组通常为 docker 或 root)
srw-rw---- 1 root root 0 Aug 10 15:30 /run/containerd/containerd.sock# 如果权限不符,修复权限并重启服务
sudo chmod 660 /run/containerd/containerd.sock
sudo chown root:docker /run/containerd/containerd.sock
sudo systemctl restart containerd
3. 重启 Docker 和 containerd 服务
sudo systemctl restart docker containerd
4. 检查系统资源
# 检查磁盘空间
df -h# 检查内存使用
free -h# 如果资源不足,清理空间或增加资源
5. 查看详细日志定位问题
# 查看 containerd 日志
sudo journalctl -u containerd --since "5 minutes ago"# 查看 Docker 日志
sudo journalctl -u docker --since "5 minutes ago"
6. 重装 Docker 和 containerd(若配置损坏)
# 卸载旧版本
sudo apt-get purge -y docker-ce docker-ce-cli containerd.io# 清理残留文件
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd# 重新安装
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io# 启动服务
sudo systemctl start docker containerd

5.3 其他可能原因

1. Docker 与 containerd 版本不兼容
  • 确保使用官方支持的版本组合,参考 Docker 文档。
2. 防火墙/SELinux 拦截
# 临时禁用 SELinux(仅用于测试)
sudo setenforce 0# 如果问题解决,需调整 SELinux 策略或禁用
sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
3. 检查 Docker 配置文件
# 查看 Docker 的 containerd 配置
sudo cat /etc/docker/daemon.json# 如果文件存在,确保包含以下内容(若无则无需修改)
{"exec-opts": ["native.cgroupdriver=systemd"],"log-driver": "json-file","log-opts": { "max-size": "100m" },"storage-driver": "overlay2"
}

六,apisix停服务报错

root@wh-VMware-Virtual-Platform:/home/apisix/apisix-3.12.0# apisix stop /usr/local/openresty//luajit/bin/luajit ./apisix/cli/apisix.lua stop nginx: [error] open() “/home/apisix/apisix-3.12.0/logs/nginx.pid” failed (2: No such file or directory)

6.1 问题原因

执行 apisix stop 时提示 nginx.pid 文件缺失,通常有两种可能:

  1. APISIX/Nginx 并未真正运行,因此没有生成 PID 文件。
  2. PID 文件路径配置错误,APISIX 找不到预期的 nginx.pid 文件。

6.2 解决步骤

1. 确认 APISIX/Nginx 是否正在运行
ps aux | grep -E 'apisix|nginx'
  • 如果输出中没有类似 nginx: worker processapisix 的进程,说明服务未运行,直接忽略错误即可(无需停止)。
  • 如果输出中有相关进程,说明服务仍在运行,但 PID 文件丢失,需手动停止。
2. 手动停止服务
  • 方法 1:优雅停止(推荐)
    如果知道 nginx.pid 的正确路径(比如在配置文件中指定了其他路径):

    nginx -p /home/apisix/apisix-3.12.0/ -c conf/nginx.conf -s stop
    
  • 方法 2:强制停止
    如果进程存在但找不到 PID 文件:

    sudo pkill -f nginx  # 强制终止所有 nginx 相关进程
    

6.3. 检查 PID 文件路径配置

打开 APISIX 的配置文件 conf/config.yaml,确认 nginx_config.pid_file 配置项:

nginx_config:pid_file: /home/apisix/apisix-3.12.0/logs/nginx.pid  # 检查此路径是否存在
  • 如果路径错误(例如目录不存在),需修改为正确路径或手动创建目录:
    mkdir -p /home/apisix/apisix-3.12.0/logs/
    

6.4. 重新启动 APISIX

停止后重新启动服务,观察是否正常生成 PID 文件:

apisix start
  • 检查 PID 文件是否生成:
    ls /home/apisix/apisix-3.12.0/logs/nginx.pid
    

6.5. 查看日志定位问题

如果启动失败,检查错误日志:

tail -f /home/apisix/apisix-3.12.0/logs/error.log

常见问题:

  • 端口被占用
  • 配置文件语法错误
  • 权限不足(可尝试用 sudo 运行)

希望本教程对您有帮助,请点赞❤️收藏⭐关注支持!欢迎在评论区留言交流技术细节!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/79296.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QT实现曲线图缩放、拖拽以及框选放大

.h文件 protected: void saveAxisRange();void wheelEvent(QWheelEvent *event) override;void mousePressEvent(QMouseEvent *event) override;void mouseMoveEvent(QMouseEvent *event) override;void mouseReleaseEvent(QMouseEvent *event) override;private:QPoint m_…

【Pandas】pandas DataFrame corr

Pandas2.2 DataFrame Computations descriptive stats 方法描述DataFrame.abs()用于返回 DataFrame 中每个元素的绝对值DataFrame.all([axis, bool_only, skipna])用于判断 DataFrame 中是否所有元素在指定轴上都为 TrueDataFrame.any(*[, axis, bool_only, skipna])用于判断…

青藏高原七大河流源区径流深、蒸散发数据集(TPRED)

时间分辨率 月空间分辨率 1km - 10km共享方式 开放获取数据大小 83.27 MB数据时间范围 1998-07-01 — 2017-12-31元数据更新时间 2024-07-22 数据集摘要 通过构建耦合积雪、冻土、冰川等冰冻圈水文物理过程的WEB-DHM模型(Water and Energy Budget-based Distribute…

window环境下,如何通过USB接口控制打印机

虽然说大多数情况下,我们可以非常便利的通过打印机驱动来控制打印机,但还是有一些特殊情况,导致无法通过打印机驱动来完成我们预想的任务,比如,打印机只是一个系统设备中的一部分,需要协调其它设备一起工作…

CDGP数据治理主观题评分标准与得分策略

1.数据模型题目评分标准 1)准确理解题目中所描述的业务逻辑和需求得[1分] 2)正确使用模型设计方法,使用信息工程、信息建模集成定义、巴克符号、陈氏符号等其中一种得[1分] 3)正确设计实体和属性,题目中涉及的实体数量为25-30个,10个以内得[2分],10-20个得[3分],25个…

工业设计破局密码:3D 可视化技术点燃产业升级引擎

3D可视化是一种将数据、信息或抽象概念以三维图形、模型和动画的形式呈现出来的技术。3D可视化技术通过构建三维数字孪生体,将设计思维转化为可交互的虚拟原型,不仅打破了传统二维设计的空间局限,更在效率、精度与用户体验层面开创了全新维度…

Qt中在子线程中刷新UI的方法

Qt中在子线程中刷新UI的方法 在Qt中UI界面并不是线程安全的,意味着在子线程中不能随意操作UI界面组件(比如按钮、标签)等,如果强行操作这些组件有可能会导致程序崩溃。那么在Qt中如何在子线程中刷新UI控件呢? 两种方…

为了摸鱼和吃瓜,我开发了一个网站

平时上班真的比较累,摸鱼和吃瓜还要跳转多个平台的话,就累上加累了。 所以做了一个聚合了全网主流平台热搜的网站。 目前市面上确实有很多这种网站了,所以目前最主要有两点和他们不同: 给热搜列表增加了配图,刷的时候…

操作系统学习笔记第2章 (竟成)

第 2 章 进程管理 【考纲内容】 1.进程与线程: (1) 进程 / 线程的基本概念; (2) 进程 / 线程的状态与转换; (3) 线程的实现:内核支持的线程;线程库支持的线程; (4) 进程与线程的组织与控制; (5)…

77.评论日记

房间要经常搞卫生,不然会很多灰,很多头发,很多垃圾。 当然,即使一直搞卫生,在一些看不到的角落也是会慢慢囤积垃圾。 想要把那些角落也打扫干净,没别的办法,只有把那个角落上所有的东西都移开&a…

语音合成之十二 TTS声学编解码器的演进

TTS声学编解码器的演进 1 引言:声码器/声学编解码器在现代TTS中的关键作用2 奠定基石:从早期声码器到神经合成的曙光3. HiFi-GAN: 革新高效高保真波形生成4. 新的疆域:面向富语义TTS的先进声学编解码器5. XCodec2.0: 统一声学与语义信息6.BiC…

大学之大:悉尼科技大学2025.5.10

悉尼科技大学:从技术先驱到全球创新枢纽的百年征程 一、历史沿革:从技工培训到世界百强名校的蜕变 1. 工业革命的技术火种(1843-1945) 悉尼科技大学的历史可追溯至1843年成立的悉尼机械学院(Sydney Mechanics’ Scho…

安装阿里云的yum源并且下载软件(CentOS7版本)

目录 1. 进入root模式: 2. 进入yum.repos.d文件下 3.备份 4. 安装阿里云的yum源 5. 安装dnf 6. 安装epel-release 7. 清除缓存,并新建缓存 8. 安装智能拼音软件包 8.1安装 8.2 进入应用程序 -- 系统工具 -- 设置 8.3重启后就可以打中文啦~ (需要重新启动才能)…

Discriminative and domain invariant subspace alignment for visual tasks

用于视觉任务的判别性和域不变子空间对齐 作者:Samaneh Rezaei,Jafar Tahmoresnezhad 文章于2018年12月4日收到,2019年5月24日被接受,2019年6月3日在线发表于Iran Journal of Computer Science期刊,DOI: 10.1007/s42…

用jsp简单实现C语言标准化测试系统

C语言标准化测试系统 在Web编程技术的学习过程中,我们小组为了深入理解相关技术原理,提升实践能力,开发了一个基于动态Web工程框架的C语言标准化考试系统。现在,就来和大家分享一下我们的项目经历。 一、实验目的剖析 这个项目…

QMK键盘固件自定义指南 - 打造你的专属键盘体验

QMK键盘固件自定义指南 - 打造你的专属键盘体验 🚀 前言 在机械键盘的世界里,QMK固件让你的键盘不再只是简单的输入设备,而是可以按照你的意愿定制的强大工具。本文将深入浅出地介绍如何自定义QMK键盘的行为,从基础概念到高级应…

5.9培训

文件上传 先找文件上传的地方,打开代理链接BP,它需要一个xls文件 我们创建一个sqzr.xls bp拦截了之后,我们修改请求,把后缀改成php,发送请求 找到我们的静态资源所在的位置 访问http://192.168.1.100:81/static/upload…

【FAQ】HarmonyOS SDK 闭源开放能力 — PDF Kit

1.问题描述: 预览PDF文件,文档上所描述的loadDocument接口,可以返回文件的状态,并无法实现PDF的预览,是否有能预览PDF相关接口? 解决方案: 1、执行loadDocument进行加载PDF文件后&#xff0c…

AutoDL实现端口映射与远程连接AutoDL与Pycharm上传文件到远程服务器(李沐老师的环境)

文章目录 以上配置的作用前提AutoDL实现端口映射远程连接AutoDLPycharm上传文件到远程服务器以上配置的作用 使用AutoDL的实例:因本地没有足够强的算力,所以需要使用AutoDL AutoDL端口映射:当在实例上安装深度学习的环境,但因为实例的linux系统问题,无法图形化显示d2l中的文件…

【Linux系列】跨平台安装与配置 Vim 文本编辑器

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…