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 の使用法の詳細な説明

推薦する

DockerにTensorFlow環境を素早くインストールする方法

Docker に TensorFlow 環境をすばやくインストールし、TensorFlow を使用し...

Linux で yum と入力した後に -bash: /usr/bin/yum: No such file or directory という問題を解決する方法

Linuxでyumを入力すると、プロンプトが表示されます: -bash: /usr/bin/yum:...

CentOS7 システムでスワップを増やす方法の例

序文スワップは、ディスク上にある「仮想メモリ」の一部である特殊なファイル (またはパーティション) ...

CSS 位置プロパティが絶対の場合のパーセンテージ値の計算

位置が絶対の場合、関連する属性のパーセンテージは、参照先の要素 (包含ブロック) を基準として計算さ...

オンラインMySQL自動増分IDが使い果たされた場合の対処方法

目次テーブル定義の自動増分 ID InnoDBシステムはrow_idを自動的に増加させるシドInno...

MySQL 実践演習 シンプルなライブラリ管理システム

目次1. ソート機能2. データベースを準備する3. データベースに関連するエンティティクラスの構築...

CSS3 のメディアクエリと rem レイアウトを組み合わせてモバイル画面に適応

CSS3 構文: (750 ピクセルのデザインの場合、1rem = 100 ピクセル) @media...

Linux の一般的なコマンド chmod を使用して、ファイルの権限 777 と 754 を変更します。

よく使用されるコマンドは次のとおりです。 chmod 777 文件或目錄例: chmod 777 /...

MySQL で 1 つのテーブルのフィールドを使用して別のテーブルのフィールドを更新する方法

1. 1列を変更する 学生の更新、都市c s.city_name = c.name を設定します こ...

Docker で Java 8 Spring Boot アプリケーションを開発する方法

この記事では、ローカル マシンに Java 8 をインストールせずに、Java 8 を使用して簡単な...

MySQL トランザクション分析

取引トランザクションはビジネス ロジックの基本単位です。各トランザクションは一連の SQL ステート...

vue router-view のネストされた表示実装

目次1. ルーティング構成2. Vueページのネスト3. ネストされた関係1. ルーティング構成 定...

MySQL ピボットテーブルについての簡単な説明

次のような製品部品表があります。一部 部品ID 部品タイプ 製品ID ---------------...

UDP DUP タイムアウト UPD ポート状態検出コード例

以前、単純な UDP サーバーとクライアントの例を書きましたが、その中で、自分自身をクライアントと見...

MySQLとPythonの相互作用の例

目次1. データを準備するデータテーブルを作成するデータの挿入2. SQLドリル1. SQL文の強化...