topコマンドの見方

topを実行すると、(Debian 12の)デフォルトでは以下の画面が表示される。特に重要な図中の赤枠の3箇所について説明する。

(1) CPUの実行時間

ここには、全てのCPUの合計を100%として、実行種別ごとの割合が表示される。
種別 説明
us ユーザモードでのプログラム実行時間。プログラムの通常処理の時間
sy カーネルモードでのプログラム実行時間。プログラムがシステムコールを呼び出すことにより、カーネル内のコードが実行された時間。ファイルの読み書きや、ネットワーク処理などがこれに相当
ni 正のNICE値が設定され、低優先度となっているプロセスのプログラム実行時間
id アイドル時間。何も実行していない時間
wa ストレージなどのデバイスへの入出力処理で、デバイスから応答を待っている時間
hi ハードウェア割り込み処理の実行時間
si ソフトウェア割り込み処理の実行時間
st ハイパーバイザ型仮想マシン上の仮想CPUが、物理CPUの割り当てを待っている時間

(2) メモリ使用量

OS全体のメモリ使用量が表示される。デフォルトの単位は、MiB。
分類 項目 説明
Mem total 全メモリ容量
free 空きメモリ容量
used 使用中のメモリ容量
buff/cache ディレクトリエントリやファイル内容のキャッシュ容量。Linuxは、空きメモリを積極的にこれらのキャッシュに割り当てるため、使用するに従い空きメモリが減少し、これらの値が増加する傾向にある
Swap total 全スワップ容量
free 空きスワップ容量
used 使用中のスワップ容量
avail Mem 利用可能なメモリ容量。大雑把には空きメモリ容量とキャッシュの合計

(3) プロセスごとの状態

ヘッダの各列の意味は次のとおり。デフォルトではプロセスはCPU使用率の降順で表示される。メモリ関連の容量のデフォルト単位はKiB。  
項目 説明
PID プロセスID
USER そのプロセスの実行ユーザー
PR プロセスの実行優先度。20が標準。数値が小さいほど優先度が高い
NI NICE値。この値が正なら、その値に応じて低優先度で実行される。負ならその値に応じて高優先度で実行される
VIRT 仮想メモリ使用量。プロセスが確保したメモリ量。この値の一部にしか物理メモリが割り当てられていない。この値が大きくてもそれほどメモリを使っていない場合もある。
RES 物理メモリ使用量。プロセスに割り当てられた物理メモリ量。そのプロセスの実際のメモリ使用量。
SHR 共有メモリ使用量。RESのうち、他のプロセスと共有されているメモリ量。
S プロセスの状態: R (実行中)、S (スリープ)、D(割り込み不可のスリープ)、Z(ゾンビ状態)
%CPU CPU使用率。ひとつのCPUをフルに使った場合100%となる。複数のCPUを使っている場合、100%を超えることがある
%MEM メモリ使用率
TIME+ プロセスのCPU使用時間。起動してからの時間ではなく、CPUが割り当てられた(つまりそのプロセスのプログラムが実行された)時間の合計。1/100秒単位。
例: 1:23.45の場合、1分23秒450ミリ秒
COMMAND 実行コマンド

参考

topコマンドの記事一覧

noVNCでWebブラウザをVNCクライアントとして利用

以下の記事は、Ubuntu 20.04上で下図の構成での実行記録。

準備と実行

以下の手順をnoVNC Server上で行う

 noVNCのダウンロード

git clone https://github.com/novnc/noVNC.git

websockifyがインストールされていない場合、インストール

sudo apt install python3-websockify

実行

--web=オプションには、ダウンロードしたnoVNCのレポジトリを指定。次いで公開するポート番号。最後にVNCサーバのIPアドレスとポート番号。
websockify --web=noVNC 8081 192.168.1.20:5901

Webブラウからのアクセス

以下のURLへWebブラウザでアクセス

  • http://192.168.1.10:8081/vnc.html
以下の画面が表示されます。

Debianでfirmware-nvidia-gsp 525.85.12がないと表示された場合の対応

firmware-nvidia-gspのこのバージョンからは、non-free-firmwareレポジトリに含まれる。 そのため、例えば、/etc/apt/sources.listに以下のようにnon-free-firmwareを追加する。
deb http://deb.debian.org/debian/ bookworm contrib non-free non-free-firmware

小規模な利用ならLXDよりLXCが使い勝手がよい

LXDは、大雑把に言えば、LXCに管理機能を強化し大規模な運用にも利用しやすくしたもの。 個人で簡易的な仮想マシンとして使う場合、LXDの機能がやや冗長に感じることがある。 そのため私はLXDでなくLXCを主に使っている。以下にその理由を述べる。

ストレージ(コンテナ内のファイルの格納場所)

LXC

ホストOS上の特定のディレクトリ/var/lib/lxc/[コンテナ名]/rootfsの下に、そのコンテナのファイルシステムがそのまま格納されている。 ホスト側から見ると、デフォルトでファイル共有されているようなもの。

LXD

デフォルトでは、ホストOS上にストレージプール用のループバックマウント用のファイルを作成する。作成時点でそのサイズを決める(例えば100GiB)。

このストレージプール用のファイルは、シンプロビジョニングされるので、最初のサイズは0。使った分だけ増えていく。ただし、コンテナを削除したり、コンテナ内のファイルを削除しても、ストレージプールの容量は減少しない。これがパーソナルユースでは、ストレスになる。ストレージプール用のファイルを拡張できるものの、最初に最大サイズをいくらにするかを決めるのは、なかなか悩みどころである。

ストレージプールのループバックファイル上btrfsなどのパーティションを作れば、スナップショットやコンテナのコピーを高速に取得できるなどのメリットもある。しかし、私の使い方では、動作中にスナップショットをとるような用途もほとんどない。コンテナそのものは、それほど肥大化しないので、コピーすることがあっても、少し待てば終わる。そのため、これらのメリットをほぼ享受できない。

また、LXCでも同様のことは可能である。自前でループバックマウント用ファイルを作ってbtrfsでフォーマットし、rootfsをその上に設定すればよい。

設定

LXC

/var/lib/lxc/[コンテナ名]/configに設定が集約されている。構成を変えたいときは、このテキストファイルを編集すればよい。構成の保存もこのファイルをバックアップすればよい。

LXD

lxc configなどのコマンドで設定する。設定をまとめて保存したり、設定するのがやや面倒。

インストール方法

LXC

DebianでもUbuntuでもaptでインストールできる。

LXD

snapで提供される。snap自体それほどメジャーでもないし、パッケージ管理システムが増えるのは、システムが複雑になりあまり嬉しくない。

SSHサーバをrootでのパスワード認証を許可して一時的に起動する方法

最近の多くのLinuxディストリビューションの多くでは、デフォルトでrootでのパスワード認証が禁止されている。 以下のコマンドは、一時的にrootでパスワード認証でログインできるSSHサーバを独立して起動する。
/usr/bin/sshd -d -p 8022 -o "PermitRootLogin yes"
  • -d: フォアグランでデバッグメッセージを表示しながら実行
  • -p: ポート番号
  • -o: rootでのパスワード認証を許可するためのオプション

クライアントからログインする方法
ssh -p 8022 -lroot サーバのIPアドレス

Debian 11 (server)でのDNSの設定

/etc/network/interfacesに以下のようにdns-nameservers行を記載
auto enp6s0
iface enp6s0 inet static
  bridge_ports enp6s0
  address 192.168.1.100
  netmask 255.255.255.0
  gateway 192.168.1.1
  dns-nameservers 192.168.1.254
参考: https://wiki.debian.org/NetworkConfiguration

My favorite simple Linux software

Category Name
Window Manager OpenBOX
Task Bar Tint2
Terminal RXVT unicode
Filer PCManFM
Music Player Pragha