Debian システムでの自動パッケージ更新の問題を解決する方法

Debian システムでの自動パッケージ更新の問題を解決する方法

いつから始まったのかはわかりませんが、コンピュータの電源を入れてインターネットに接続するたびに、データのダウンロードが続き、ステータス バーにはネットワーク速度が 1 ~ 2 メガビット/秒に達したことが表示されます。最初はあまり気にしていなかったのですが、後になってこの不可解なダウンロードによって帯域幅が完全に占有されてしまい、Web を正常に閲覧することさえできなくなったため、この問題を解決することにしました。以下は、この問題を解決する過程の記録です。

まず、nethogs というリアルタイム ネットワーク速度監視プログラムを使用して、どのプロセスが帯域幅を占有しているかを確認しました。帯域幅を占有していたのはシステムの APT パッケージ管理ツールであることがわかりました。自動更新を実行しているシステムが原因だと思いました。このプロセスを終了した後、APT パッケージ管理ツールの自動更新をオフにする方法を Google で調べました。インターネット上で人々によって提供される解決策のほとんどは同じです。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 日に 1 回自動的に実行します。1 は有効、0 は無効を意味します。
  • APT::Periodic::Unattended-Upgrade; unattended-upgrade セキュリティ アップグレード スクリプトを 1 日に 1 回実行します。1 は有効、0 は無効を意味します。

しかし、それは役に立ちませんでした。翌日、コンピュータの電源を入れたあと、APT は自動的に再度更新されました。さらに奇妙だったのは、APT プロセスを終了した直後に、再度実行されたことです。そのとき、私はあることに気づきました。APT は実行するために自動的にメモリにロードされるわけではなく、別のプロセスがそれを呼び出す必要があるということです。プロセス マネージャーを開いた後、APT プロセスの依存関係を確認したところ、packagekit という親プロセスが実際に存在していました。確認してみると、packagekit は Linux ディストリビューションでのソフトウェアのインストールと更新を簡素化するために設計されたシステムであることがわかりました。これは、さまざまなパッケージ管理ツールに統一されたフロント エンドを提供するもので、さまざまな Linux ディストリビューションのソフトウェア パッケージを管理するために使用できます。

私のシステムは、起動時にデフォルトで packagekit サービスを開始します。packagekit の起動ユニットを確認します。
cat /lib/systemd/system/packagekit.service

[ユニット]
説明=PackageKitデーモン
# PK は ostree で管理されたシステム上で何も実行できません。
# 現在の設計では、次のような専用デーモンを用意しています
# eos-updater および rpm-ostree、そして gnome-software はそれらと通信します。
ConditionPathExists=!/run/ostree-booted

[サービス]
タイプ=dbus
バス名=org.freedesktop.PackageKit
ユーザー=root
ExecStart=/usr/lib/packagekit/packagekitd

このユニットは、システムが起動するたびに起動され、/usr/lib/packagekit/packagekitd コマンドが実行されます。操作中、packagekit は APT を呼び出して、更新が必要なソフトウェア パッケージをダウンロードします。

これらの問題がわかれば、自然に解決されます。このサービスを無効にします: systemctl enable packagekit.service。

または、/lib/systemd/system/ ディレクトリ内の packagekit.service を削除するだけです (もちろん、このファイルを別の場所に移動し、後で必要になったときに元に戻すこともできます)。

その後、システムは自動更新を再度実行することはありませんでした。

[付録]

nethohs は、プロセスごとにネットワークをリアルタイムに監視できるコマンドライン ツールです。特定の瞬間に通信しているプロセスのネットワーク トラフィック情報を動的に表示できます。
Debian/Ubuntu では、apt-get install nethogs を使用してインストールします。
またはコンパイルしてインストールします:

https://github.com/raboof/nethogs/archive/v0.8.5.tar.gz を実行します。
tar xf v0.8.5.tar.gz 
cd ./nethogs-0.8.5/
作成 && インストール

コンパイルに失敗した場合は、依存ライブラリをインストールする必要があります。

apt-get で libncurses5-dev と libpcap-dev をインストールします。

使用

root@zsimline$ nethogs
NetHogs バージョン 0.8.5-2+b1
PID ユーザー プログラム 開発者 送信 受信 
2181 mxsyx /usr/share/code/code usb0 0.449 0.900 KB/秒
1598 mxsyx /usr/lib/chromium/chromium usb0 0.031 0.018 KB/秒
? ルート不明 TCP 0.000 0.000 KB/秒

 合計 0.480 0.917 KB/秒

ネットワークカードを指定する

root@zsimline$ nethogs wlan0 #wlan0 を監視
root@zsimline$ nethogs -a # すべてのネットワークカードを監視

リフレッシュレートを秒単位で指定します(デフォルトは1)

ルート@zsimline$ nethogs -d 2

更新回数を指定する -c 数値 (デフォルトでは無制限)

ルート@zsimline$ nethogs -c 10

インタラクティブモード

nethogs を入力した後、次の対話型コマンドを使用できます。

q: 終了
s: 送信トラフィックで並べ替え
r: トラフィック順に並べ替え
m: ネットワーク速度の単位(KB、B、MB)とKB/sを変更する

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Debian 9 システムに MySQL データベースをインストールする方法
  • Debian 9 システムでデフォルトのネットワーク カードを eth0 に変更する方法
  • Debian システムで PHP プログラム用の Nginx サーバーを構成するための基本的なチュートリアル
  • Debian システムで LNMP を設定するためのチュートリアル
  • Ubuntu または Debian を実行しているサーバーから MySQL をアンインストールする方法
  • Linux サーバー システム CentOS、uBuntu、Gentoo、FreeBSD、Debian の比較

<<:  Windows 環境での MYSQL5.7 設定ファイルの場所のグラフィカル分析

>>:  vuex での Getter の使用法の詳細な説明

推薦する

MySQL で重複行を見つけて削除する方法

目次1. 重複行を見つける方法2. 重複行を削除する方法3. 複数の列で重複を見つける方法4. クエ...

XHTML 入門チュートリアル: テキストの書式設定と特殊文字

<br />このセクションでは、XHTML でテキストの書式設定と特殊文字を実装する方法...

データベースの冗長フィールドを合理的に使用する方法

privot は、多対多の関係の中間テーブルです。 PT5 フレームワークは自動的に privot ...

IE 環境での css-vars-ponyfill の使用に関する詳細な説明 (nextjs ビルド)

css-vars-ポニーフィルCSS 変数を使用して Web ページのスキニングを実現すると、互換...

Mac OS に MySQL 5.7.20 をインストールするための詳細なグラフィックとテキストの説明

Mac OS X で TAR.GZ から MySQL 5.7 をインストールする MySQL 5.6...

MySQL はどのようにしてデータベースの削除と暴走を効果的に防ぐことができますか?

目次セーフモード設定テスト1. where句なしで更新および削除する2. 非インデックスキーの削除3...

Vue3 で状態管理を実装するために provide を使用する方法

目次序文provide/inject を通じて Vuex 関数を実装する方法このプラグインをアプリケ...

純粋なJSを使用してセカンダリメニュー効果を実現します

この記事の例では、セカンダリメニュー効果を実現するためのJSの具体的なコードを参考までに共有していま...

HTML に埋め込まれた Flash HTML ウェブページ コードに Flash ファイルを埋め込むソリューション (パート 1)

中国の習慣では、旧暦の1月15日より前に新年を祝います。ここで、庭にいる友人たちに新年の幸せを祈りた...

Vueは不規則なスクリーンショットを実装する

目次SVG による画像キャプチャCSS部分エフェクト画像表示ソースコードアドレスこれまで見てきたもの...

事例を通してLinux NFSの仕組みを詳細に分析

前回の記事に引き続き、web02 サーバーを作成し、web01 サーバーと web02 サーバーの ...

MySQL の union と union all の簡単な分析

データベースでは、UNION キーワードと UNION ALL キーワードの両方が 2 つの結果セッ...

MySQLの関連ロックについての簡単な理解

この記事は主にInnoDBのロックに関する知識を素早く理解してもらうことを目的としています。 Roc...

サーバー間のファイル バックアップ ソリューション、サーバー ファイルを別のサーバーに自動的にバックアップする方法は?

多くの組織ではファイル サーバーをバックアップする必要があり、あるサーバーから別のファイル サーバー...

dubbo での Zookeeper リクエストのタイムアウト問題: mysql8.0.15 に接続する mybatis+spring の構成

ここ2日間Javaを復習するつもりなので、練習にdubboを使ってショッピングモールプロジェクトを書...