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データベースは何をするのか

MySQL は、スウェーデンの会社 MySQL AB によって開発されたリレーショナル データベース...

エンコードが utf-8 に設定されている場合に Web ページが文字化けする問題の解決策

最近、PHP で Web ページを書いているときに、エンコードを UTF-8 に設定しました。しかし...

Docker で Redis センチネル モードを構成する方法 (複数のサーバー上)

目次序文状態DockerをインストールするRedisのマスターノードとスレーブノードを構成する序文以...

ネイティブJavaScriptでカルーセルを実装する

この記事では、JavaScriptでカルーセルを実装するための具体的なコードを参考までに紹介します。...

さまざまなReact状態マネージャーの解釈と使用方法

まず、状態マネージャーとは何か、そしてそれが何をするのかを知る必要があります。複数のページで同じプロ...

Tomcat コアコンポーネントとアプリケーションアーキテクチャの詳細な説明

目次Web コンテナとは何ですか? HTTP の性質HTTP リクエスト応答の例クッキーとセッション...

MySQL に外部キー制約を追加する具体的な方法

このチュートリアルの動作環境: Windows 7 システム、MySQL 8 バージョン、Dell ...

20個のJavaScriptワンラインコードを共有する

目次1. ブラウザのクッキーの値を取得する2. RGBを16進数に変換する3. クリップボードにコピ...

Docker-compose を使用して ELK クラスターを構築する方法

すべてのオーケストレーション ファイルと構成ファイルは、私の Github からアクセスできます。構...

JS ES6 スプレッド演算子の魔法のような使い方

目次1. 属性を追加する2. 複数のオブジェクトを結合する3. オブジェクトのプロパティを削除する4...

CSS: 訪問した疑似クラスセレクタの秘密の記憶

昨日、a:visited を使用して「Guess You Like」の右側にある訪問済みテキストの色...

ディレクトリスクロール効果を実現するネイティブJS

これはネイティブ JS で実装されたテキスト スクロール効果です。この効果は通常、ニュース、ダイナミ...

Linux C バックグラウンドサービスプログラムの単一プロセス制御の実装

導入通常、バックグラウンド サーバー プログラムには 1 つのプロセスのみが必要ですが、単一のプロセ...

Zabbix で複数の JVM プロセスを監視する方法

1. シナリオの説明:私たちの環境ではマイクロサービスを使用しています。各プログラムには個別のプロセ...

MySQL における in と exists の使い方と違いの紹介

まずコードを書いて (int i=0;i<1000;i++){ (int j=0;j<5...