解決Debian系統自動更新軟件包的問題


不知從何時開始,我的電腦每天開機連接上網絡之后,不斷的在下載數據,狀態欄顯示網速達到每秒1到2兆。開始我還不太在意,不過后來由於帶寬全部被這種莫名其奧妙的下載占據了,我連網頁都無否正常瀏覽了,所以我決定解決掉這個問題。下面記錄一下解決這個問題的過程。

  首先我利用一款名為nethogs的實時網速監控程序查看是哪個進程在占據帶寬,發現占據帶寬的正是系統的APT包管理工具,我想肯定是系統在執行自動更新。殺掉這個進程后,我便去Google了一下如何關閉APT包管理工具的的自動更新。網上人們提供的解決方案大都一致:修改APT的配置文件。

APT關於自動更新的配置文件位於"/etc/apt/apt.conf.d/20auto-upgrades", 將其中的

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";

更改為

APT::Periodic::Update-Package-Lists "0";
APT::Periodic::Unattended-Upgrade "0";

其中

  • APT::Periodic::Update-Package-Lists; 每一天自動運行一次 apt-get update,1 表示啟用,0 表示禁用。
  • APT::Periodic::Unattended-Upgrade; 每一天運行一次 unattended-upgrade 安全升級腳本,1 表示啟用,0 表示禁用。

  然而,並無卵用,第二天開機后APT又執行自動更新了,更奇怪的是殺掉APT進程不久之后它會再一次運行。這時我才意識到一件事情,APT是不會自動把自己調入內存運行的,一定是另有進程調用了它。打開進程管理器之后,查看 APT 進程的依賴關系,發現果然它有一個名為 packagekit 的父進程,我查了一下 packagekit 是一個旨在簡化Linux發行版安裝和更新軟件的系統,它為不同的包管理工具提供了統一的前端,你可以在不同的Linux發行版中使用它來管理軟件包。

  我的系統默認在開機時啟動packgekit服務,查看 packagekit 的啟動單元:
cat /lib/systemd/system/packagekit.service

[Unit]
Description=PackageKit Daemon
# PK does not know how to do anything on ostree-managed systems;
# currently the design is to have dedicated daemons like
# eos-updater and rpm-ostree, and gnome-software talks to those.
ConditionPathExists=!/run/ostree-booted

[Service]
Type=dbus
BusName=org.freedesktop.PackageKit
User=root
ExecStart=/usr/lib/packagekit/packagekitd

系統每次開機時都會啟動這個單元,執行 /usr/lib/packagekit/packagekitd 命令,而 packagekit 又將在運行期間調起APT下載需要更新的軟件包。

  知道了這些問題自然也就解決了,禁用此服務: systemctl disable packagekit.service.
  或者干脆刪除 /lib/systemd/system/ 目錄下的 packagekit.service (當然你也可以把這個文件移動到別的地方去,以后用到時再放回來)

  在那之后,系統便再也沒有執行過自動更新了。
  
[附]

nethohs是一個能按進程實時監控網絡的命令行工具,它可以動態的展示某一時刻正在進行通信的進程的網絡流量信息。

在 Debian/Ubuntu 下,使用apt-get install nethogs 安裝它。
或編譯安裝:

wget -c https://github.com/raboof/nethogs/archive/v0.8.5.tar.gz
tar xf v0.8.5.tar.gz 
cd ./nethogs-0.8.5/
make && make install

如果編譯失敗需要安裝依賴庫

apt-get install libncurses5-dev libpcap-dev

使用

root@zsimline$ nethogs
NetHogs version 0.8.5-2+b1
PID  USER    PROGRAM                   DEV  SENT      RECEIVED  
2181 mxsyx  /usr/share/code/code       usb0 0.449   0.900 KB/sec
1598 mxsyx  /usr/lib/chromium/chromium usb0 0.031   0.018 KB/sec
?    root   unknown TCP                     0.000   0.000 KB/sec

  TOTAL                                     0.480       0.917 KB/se

指定網卡

root@zsimline$ nethogs wlan0 # 監聽wlan0
root@zsimline$ nethogs -a    # 監聽所有網卡

指定刷新頻率 -d seconds (默認為1)

root@zsimline$ nethogs -d 2

指定刷新次數 -c number (默認不限)

root@zsimline$ nethogs -c 10

交互模式
在進入 nethogs 之后,可以使用如下的交互命令:

q: 退出
s: 按照發送流量排序
r: 按照流量排序
m: 修改網速單位 (KB, B, MB) and KB/s


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM