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 データベースの列を追加、削除、および変更する方法について説明...

Docker ロード後にイメージ名が none になる問題の解決方法

最近、docker load -i コマンドを使用してイメージ パッケージを圧縮した後、イメージ名と...

Web ベースの電子メール コンテンツの HTML フォーマット標準の概要

1. ページ要件1) 標準のヘッダーとフッターを使用するXML/HTML コードコンテンツをクリップ...

HTML のセルパディングとセルスペース属性を図で説明します

セル - 表の内容 セルの余白 (表の余白) (cellpadding) - セルの外側の距離を表し...

MySQL SELECT実行順序の簡単な理解

SELECT ステートメントの完全な構文は次のとおりです。 (7)選択 (8) DISTINCT ...

HTML タグ dl dt dd 使用方法

基本構造:コードをコピーコードは次のとおりです。 <ダウンロード> <dt>...

CSSはグラデーションを巧みに利用して高度な背景光アニメーションを実現します

成し遂げるこの効果は CSS を使用して完全に再現することは困難です。 CSS でシミュレートされた...

MySQLでルートユーザーのパスワードを変更する方法

方法1: SET PASSWORDコマンドを使用する mysql> username@loca...

mysql データベースの作成、ユーザーの追加、ユーザー認証の実用的な方法

1. MySQLデータベースを作成する1. データベース構文を作成する --「testdb」という名...

MySQLトリガートリガー例の詳細な説明

目次トリガーとは何かトリガーを作成する表は次のようになります。さらにいくつかの単語を挙げます。制限と...

jQueryは何に使われるのですか?jQueryは実際にはjsフレームワークです

jQuery 入門jQuery ライブラリは、簡単なマークアップ行を使用して Web ページに追加で...

派手なカルーセル効果を実現するJavaScript

この記事では、JavaScriptで派手なカルーセル効果を実装する2つの方法を紹介します。具体的な内...

React.FCとReact.Componentの使用に関する簡単な説明

目次1. React.FC<> 2. クラスxxはReact.Componentを拡張し...

Ubuntu 16.04 で PostgreSQL の起動を設定する方法

PostgreSQL はコンパイルされインストールされるため、起動時に起動するように設定する必要があ...

マークアップ言語 -

123WORDPRESS.COM HTML チュートリアル セクションに戻るには、ここをクリックして...