Ubuntu-找出並殺掉所有 apt-get 或者 apt 進程& 刪除鎖定的文件

最近安裝apt-get時,遇到 一些問題,找到了這個帖子。供學習。

找出並殺掉所有 apt-get 或者 apt 進程&刪除鎖定的文件


https://linux.cn/article-8040-1.html


在 Ubuntu 或者它的衍生版如 Linux Mint(我已經作爲日常工作使用的系統)中使用 apt-get 命令或者其相對更新的APT 管理工具時,你可能會在命令行中看到一個 unable to lock the administration directory (/var/lib/dpkg/) is another process using it 的錯誤。

這個錯誤尤其對那些對這個錯誤原因不瞭解的 Linux(Ubuntu)新手而言更加惱人。

下面是一個例子,展示了出現在 Ubuntu 16.10 上的文件鎖定錯誤:

  1. tecmint@TecMint:~$ sudo apt install neofetch
  2. [sudo] password for tecmint:
  3. E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
  4. E: Unable to lock the administration directory (/var/lib/dpkg), is another process using it?

下面的輸出是另外一個可能顯示的錯誤:

  1. E: Could not get lock /var/lib/apt/lists/lock - open (11: Resource temporarily unavailable)
  2. E: Unable to lock directory /var/lib/apt/lists/
  3. E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
  4. E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?

你將來遇到這個錯誤該怎麼去解決?有好幾種方法處理這個錯誤,但是本篇中我們會用兩種或許是最簡單和最有效的方法來解決它。

1、找出並殺掉所有 apt-get 或者 apt 進程

運行下面的命令來生成所有含有 apt 的進程列表,你可以使用 ps 和 grep 命令並用管道組合來得到含有 apt 或者 apt-get 的進程。

  1. $ ps -A | grep apt

找出 apt 以及 apt-get 進程

找出 apt 以及 apt-get 進程

你可以看到上面命令輸出的每個 apt-get 或者 apt 進程,使用下面的命令殺掉每個進程

上面截圖中的第一列是進程 ID(PID)。

  1. $ sudo kill -9 processnumber
  2. 或者
  3. $ sudo kill -SIGKILL processnumber

比如,下面命令中的9是 SIGKILL 的信號數,它會殺掉第一個 apt 進程:

  1. $ sudo kill -9 13431
  2. 或者
  3. $ sudo kill -SIGKILL 13431

2、 刪除鎖定的文件

鎖定的文件會阻止 Linux 系統中某些文件或者數據的訪問,這個概念也存在於 Windows 或者其他的操作系統中。

一旦你運行了 apt-get 或者 apt 命令,鎖定文件將會創建於 /var/lib/apt/lists//var/lib/dpkg//var/cache/apt/archives/ 中。

這有助於運行中的 apt-get 或者 apt 進程能夠避免被其它需要使用相同文件的用戶或者系統進程所打斷。當該進程執行完畢後,鎖定文件將會刪除。

重要提醒:萬一你在沒有看到 apt-get 或者 apt 進程的情況下在上面兩個不同的文件夾中看到了鎖定文件,這是因爲進程由於某個原因被殺掉了,因此你需要刪除鎖定文件來避免該錯誤。

首先運行下面的命令來移除 /var/lib/dpkg/ 文件夾下的鎖定文件:

  1. $ sudo rm /var/lib/dpkg/lock

之後像下面這樣強制重新配置軟件包:

  1. $ sudo dpkg --configure -a

也可以刪除 /var/lib/apt/lists/ 以及緩存文件夾下的鎖定文件:

  1. $ sudo rm /var/lib/apt/lists/lock
  2. $ sudo rm /var/cache/apt/archives/lock

接下來,更新你的軟件包源列表:

  1. $ sudo apt update
  2. 或者
  3. $ sudo apt-get update

總結一下,對於 Ubuntu(以及它的衍生版)用戶在使用 apt-get 或者 apt 也叫 aptitude 命令時遇到的問題,我們已經用兩種方法來解決了。

你有什麼可以分享出來的有效的方法來處理這個錯誤麼?在下面的評論區聯繫我們。

除此之外,你可能還希望瞭解如何找出並殺掉運行的進程,你可以閱讀這篇用 kill、pkill、killall 來中止進程指南來了解。


via: http://www.tecmint.com/fix-unable-to-lock-the-administration-directory-var-lib-dpkg-lock

作者:Aaron Kili 譯者:geekpi 校對:wxy

本文由 LCTT 組織編譯,Linux中國 榮譽推出


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章