[架構之美]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.pswp.cn/web/79296.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/79296.shtml
英文地址,請注明出處:http://en.pswp.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 的首頁,持續學…