Ubuntuの使い方
【概要】本ページでは、Ubuntuの基本的な使い方について解説する。第1章ではインストールと初期設定、第2章ではシェルの基本操作と管理者権限、第3章では環境変数の設定方法を説明する。第4章では基本的なLinuxコマンド、第5章ではCSVファイルの扱い、第6章ではSSHによるリモート接続を取り上げる。第7章ではPython開発環境、第8章ではGitやCMakeなどの開発ツール、第9章ではJava環境の構築方法を示す。第10章ではシステムの運用保守としてパッケージ管理と更新作業、第11章ではトラブルシューティングの手法を解説する。
【この記事の対象読者】Ubuntu(Linux)環境の本格利用(開発や研究など)を行いたい学生・技術者を対象としている。コマンドライン操作の基礎から、Python・Javaによる開発環境の構築、サーバー運用までを扱う。
【重要概念】
- シェル(Shell)/端末: コマンドを入力してコンピューターを操作するインターフェース。Ubuntuでは「端末」アプリから「bash」シェルを利用し、キーボード操作(CUI)でシステムを制御する。
- 管理者権限(sudo): システム設定の変更やソフトウェアのインストールに必要な特権。Ubuntuではrootアカウントでの直接ログインを避け、
sudoコマンドで一時的に権限を取得するのが標準である。 - パッケージ管理(APT): ソフトウェアの導入・更新・削除を管理するシステム。
aptコマンドにより、依存関係を自動解決しながらパッケージを管理する。 - 環境変数(PATH): OSやシェルの動作設定を保持する変数。PATHは、コマンド名だけでプログラムを実行できるよう、実行ファイルの検索先ディレクトリを指定する。
【目次】
- Ubuntuのインストールとセットアップ
- シェルの利用、管理者権限、基本機能
- 環境変数とパスを通す
- 基本的なLinuxコマンドとリファレンス
- データファイル(CSV)
- リモート接続とプロセス継続
- プログラミング言語Pythonとツール
- プログラミング用ツール類(Git、CMake、GDB)
- プログラミング言語Java
- オペレーティングシステムの運用保守
- トラブルシューティング
【サイト内のUbuntu関連ページ】
- Ubuntuシステムの基本操作ガイド: 別ページ »で説明
- Ubuntu 24.04のインストールと初期設定ガイド: 別ページ »で説明
- Ubuntu 24.04 初期設定詳細ガイド: 別ページ »で説明
- Linux基本コマンドとその活用法: 別ページ »で説明
- Ubuntu 24.04 開発・研究環境構築ガイド: 別ページ »で説明
- Ubuntuシステムの更新ガイド: 別ページ »で説明
- Ubuntuシステムの管理と運用、各種設定: 別ページ »で説明
- Ubuntuサーバ管理・セキュリティガイド: 別ページ »で説明
【外部リソース】
- Ubuntuの公式ページ(日本語版): https://jp.ubuntu.com/
- Ubuntu 24.04 の公式リリースページ: https://releases.ubuntu.com/noble/
- Ubuntuのダウンロード公式ページ(日本語版): https://jp.ubuntu.com/download
- 公式のUbuntuミラーサイトのページ: https://launchpad.net/ubuntu/+cdmirrors
- fosswire.comのUnix/Linuxコマンドリファレンス: https://files.fosswire.com/2007/08/fwunixref.pdf
- DistroWatchのUbuntuのページ: https://distrowatch.com/table.php?distribution=ubuntu
1. Ubuntuのインストールとセットアップ
Ubuntuのインストールと基本的な初期設定
Ubuntu 24.04 LTS(Noble Numbat)は長期サポート版(Long Term Support)であり、標準で5年間のセキュリティアップデートが提供される。導入には、公式サイトからISOイメージを入手し、Rufus(Windows用)やUbuntu標準の「ブータブルUSBの作成」等で起動用USBメディアを作成する。
インストール形式は、既存OSとの共存(デュアルブート)またはディスクを削除してインストールから選択する。後者はディスク内の全データが消去されるため、実行前に外付けディスク等へバックアップを取る。インストール完了後は、管理者権限(sudo)の確認、システム更新、NVIDIAドライバや日本語入力(Mozc)の導入、ファイアウォール(ufw)の有効化を行う。
【サイト内の関連ページ】
- Ubuntu 24.04のインストールと初期設定ガイド: 別ページ »で説明
【関連する外部ページ】
- Ubuntuのダウンロード公式ページ(日本版): https://jp.ubuntu.com/download
Ubuntuの詳細設定
インストール直後に行う設定を以下に示す。
- リポジトリの設定: ダウンロード速度を改善する場合、接続先を国内ミラー(jp.archive.ubuntu.com)に変更する。
- システム更新:
sudo apt updateでパッケージリストを最新化し、sudo apt full-upgradeでパッケージを更新してセキュリティ修正を適用する。 - 時刻同期:
timedatectlでタイムゾーンとNTP(Network Time Protocol、ネットワーク経由の自動時刻同期)の設定を確認する。 - 日本語環境: 日本語フォントと入力メソッド(IBus + Mozc)を設定する。ディレクトリ名の英語化(「ダウンロード」→「Downloads」)を行うと、CUIでのパス入力が簡単になる。
- セキュリティ:
sudo ufw enableでファイアウォールを有効化する。SSH接続が必要な場合はOpenSSHサーバーを導入し、公開鍵認証の使用やポート変更等の設定を行う。 - その他: NVIDIAドライバの導入(
sudo ubuntu-drivers autoinstallを実行して再起動する)、net-tools等の運用ツール導入、不要ソフトウェアの削除を必要に応じて行う。
【サイト内の関連ページ】
- Ubuntu 24.04 初期設定詳細ガイド: 別ページ »で説明
ソフトウェアのインストール方法
ソフトウェアの追加方法は、GUIとCUIの2種類がある。
- GUI(App Center): デスクトップ左下のアプリアイコンから「App Center」を起動し、検索またはカテゴリからアプリを選択してインストールする。
- CUI(aptコマンド): 端末で以下を実行する。
# パッケージリストを更新 sudo apt update # パッケージをインストール(例: GIMP) sudo apt install gimpパッケージ名が不明な場合は
apt search <キーワード>で検索し、apt show <パッケージ名>で内容を確認する。
【サイト内の関連ページ】
2. シェルの利用、管理者権限、基本機能
ターミナルの起動方法やGNOMEデスクトップ環境での基本操作は「Ubuntu システムの基本操作ガイド」で説明している。
端末
端末(ターミナル)は、コマンド入力でコンピューターを操作するインターフェースである。Ubuntu Desktopでは「GNOME Terminal」が標準で利用できる。端末を開くとシェル(標準ではbash)が起動し、プロンプト(コマンド入力待ちを示す記号列)が表示される。
bashシェル
bash(Bourne Again SHell)はUbuntuの標準の対話シェルである。コマンド履歴(↑↓キー)、Tab補完、リダイレクト、パイプ、シェルスクリプトによる処理の自動化などの機能を持つ。
管理者権限での実行(su、sudo)
日常作業は一般ユーザー権限で行い、システム変更時のみ管理者権限を使用する。
-
sudo: 一時的に管理者権限でコマンドを実行する。実行内容がログに記録される。
sudo apt update # パッケージリスト更新 sudo vi /etc/fstab # システム設定ファイル編集 sudo -i # rootシェルを起動 -
su: 別ユーザー(既定はroot)に切り替える。切り替え先のパスワードが必要である。
su - # rootに切り替え(rootの環境変数を読み込む) exit # 元のユーザーに戻る su otheruser # 他のユーザーに切り替え -
rootでの直接ログイン: 操作ミスがシステム全体に影響するため、日常的には行わない。サーバー環境ではrootログインを無効化し、sudoを使用する運用が一般的である。
シェルの基本機能(リダイレクト、パイプ)
シェルはコマンドの入出力先を変更できる。
- リダイレクト: 出力先・入力元をファイルに変更する。
>は上書き、>>は追記、<は入力、2>はエラー出力を指定する。 - パイプ(
|): コマンドの出力を次のコマンドの入力に渡す。
ls -l /usr/bin > bin_list.txt # 一覧をファイルに保存
date >> system_log.txt # 日時を追記
sort < names.txt # ファイルから読み込んでソート
grep 'ERROR' system.log | wc -l # ERRORを含む行数をカウント
詳細は「Linux基本コマンドとその活用法 - シェルの機能」で説明している。
rootユーザーのパスワード設定について
Ubuntuではrootアカウントのパスワードが初期状態で設定されておらず、rootでのログインはできない。管理作業はsudoで行う。rootパスワードを設定する場合はsudo passwd rootを実行する。
ヒアドキュメント(here document)
複数行のテキストをコマンドの標準入力として与える機能である。設定ファイルの生成やメッセージ表示に使用する。
cat > /tmp/message.txt << 'EOF'
1行目のテキスト
2行目のテキスト
EOF
区切り文字(上例ではEOF)をクォートすると、変数展開が抑制される。
リソース制限(ulimit)
ulimitは、シェルとその子プロセスが使用できるリソース(オープンできるファイル数、メモリ等)の上限を確認・設定する。
ulimit -a # 全制限値を表示
ulimit -n # 同時に開けるファイル数の上限を表示
3. 環境変数とパスを通す
環境変数
環境変数は、OSやシェルの動作設定を保持する名前付きの値である。子プロセスに引き継がれる。代表的な環境変数として、HOME(ホームディレクトリ)、LANG(言語設定)、PATH(コマンド検索パス)がある。
echo $HOME # 環境変数の値を表示
export MY_VAR="value" # 環境変数を設定(子プロセスにも継承)
printenv | grep MY # 設定済み環境変数を検索
パスを通す
PATHは、コマンド名だけで実行ファイルを起動できるよう、検索先ディレクトリをコロン区切りで指定する環境変数である。自作スクリプトや追加インストールしたツールをコマンド名で実行するには、そのディレクトリをPATHに追加する(「パスを通す」)。
export PATH="$HOME/myapps/bin:$PATH"
設定を永続化するには、~/.bashrcや~/.profileに上記を追記し、source ~/.bashrcで反映させるか、新しい端末を開く。
4. 基本的なLinuxコマンドとリファレンス
日常的に使用する基本コマンドを分類して示す。各コマンドの詳細は--helpオプションまたはmanコマンドで確認できる。
- ファイル・ディレクトリ操作:
ls、cd、pwd、cp、mv、rm、mkdir、rmdir、touch
- ファイル内容表示:
cat、less、head、tail
- 検索:
find、grep、which
- プロセス管理:
ps、top、htop、kill、pkill、jobs、fg、bg
- システム情報:
df、du、free、uname、lsb_release、uptime、shutdown、reboot
- パッケージ管理:
apt update、apt upgrade、apt full-upgrade、apt install、apt remove、apt search
- ネットワーク:
ip addr、ss、ping、curl、wget、ssh、scp
- アーカイブ・圧縮:
tar、gzip、gunzip、zip、unzip
包括的なリファレンスは「Linux基本コマンドとその活用法」で説明している。
5. データファイル(CSV)
CSV(Comma Separated Values)
CSVは、カンマで列を、改行で行を区切るテキスト形式である。表データの保存やアプリケーション間のデータ交換に使用される。フィールド内にカンマ・改行・ダブルクオートを含む場合は、フィールド全体をダブルクオートで囲む。ダブルクオート自体は""で表現する。
ID,Name,"Address",Phone
1,"Yamada, Taro","Tokyo, Japan",090-1234-5678
2,"Sato, Hanako","Osaka ""Big"" City",
6. リモート接続とプロセス継続
SSH(Secure Shell)
SSHは、暗号化された通信で他のコンピューターにログインし、コマンド実行やファイル転送を行うプロトコルである。
ssh user@hostname # リモートログイン
ssh -i ~/.ssh/id_rsa user@host # 秘密鍵を指定して接続
ssh user@host 'uptime' # リモートでコマンド実行
SSHの公開鍵認証
パスワードの代わりに鍵ペア(秘密鍵・公開鍵)で認証する方式である。パスワード入力が不要になるため、スクリプトによる自動化に利用できる。
- 鍵ペアの生成: クライアントで
ssh-keygenを実行する。 - 公開鍵の登録:
ssh-copy-id user@hostでサーバーの~/.ssh/authorized_keysに公開鍵を追加する。 - 接続:
ssh user@hostで鍵認証によりログインする。
秘密鍵の管理: 秘密鍵(~/.ssh/id_rsa等)が第三者に渡ると不正アクセスに利用される。chmod 600 ~/.ssh/id_rsaで所有者のみが読み書きできるようにし、鍵生成時にパスフレーズを設定する。
設定手順の詳細は別ページ »で説明している。
SFTP/SCP
SSHを利用したファイル転送コマンドである。
- sftp: 対話的なファイル転送。put(アップロード)、get(ダウンロード)等のコマンドを使用する。
- scp: 非対話的なファイルコピー。cpコマンドと同様の書式で使用する。
sftp user@host # 対話セッション開始
scp myfile.txt user@host:/home/user/ # ファイルをアップロード
scp user@host:/var/log/syslog . # ファイルをダウンロード
リモート接続が切れてもプロセスを継続する(nohup、disown)
SSH切断後も処理を継続させる方法を示す。
- nohup: 切断シグナル(SIGHUP)を無視してバックグラウンド実行する。出力先を指定しない場合は
nohup.outに保存される。nohup ./long_task.sh > task.log 2>&1 & - disown: 実行中のジョブをシェルの管理から切り離す。
# Ctrl+Zで一時停止 → bgでバックグラウンド再開 → disownで切り離し bg %1 disown %1
指定時刻にコマンドを実行(atコマンド)
atは、指定時刻に一度だけコマンドを実行する。定期実行にはcronを使用する。
sudo apt install at # インストール
sudo systemctl enable --now atd # サービス起動
at now + 5 minutes # 5分後に実行(対話入力)
atq # 予約一覧
atrm 3 # ジョブ3を削除
7. プログラミング言語Pythonとツール
Pythonの詳細情報は別ページで説明している。
UbuntuのシステムPython
UbuntuにはOSの機能が使用するPython(Ubuntu 24.04ではPython 3.12)がプリインストールされている。この「システムPython」に対してパッケージの追加や削除を行うとOSの動作に影響する場合があるため、開発用途では仮想環境(venv)を使用する。
詳細は別ページ »で説明している。
Python、pip、開発環境
- Pythonインタプリタ:
python3コマンドでスクリプト実行や対話モードを利用する。 - pip: Pythonパッケージのインストーラ。
sudo apt install python3-pipで導入する。システムPythonへの直接インストールは避け、仮想環境内で使用する。 - 開発環境: venv(仮想環境)、Git(バージョン管理)、エディタ/IDEを組み合わせて構築する。
詳細は別ページ »で説明している。
複数のPythonバージョンの管理(pyenv)
pyenvは、複数のPythonバージョンをインストールし、プロジェクトごとに切り替えるツールである。システムPythonとは別の場所にインストールされる。
インストール方法は別ページで説明している。
venv(Python仮想環境)
venvは、Python 3.3以降に標準搭載された仮想環境機能である。プロジェクトごとに独立した環境を作成し、ライブラリの依存関係を分離できる。
python3 -m venv myenv # 仮想環境を作成
source myenv/bin/activate # 有効化(プロンプトが変化)
pip install requests pandas # ライブラリをインストール
python my_script.py # スクリプト実行
deactivate # 無効化
詳細は別ページ »で説明している。
pip(Pythonパッケージインストーラ)
pipは、PyPI(Python Package Index、Pythonパッケージの公式リポジトリ)からライブラリをインストールするツールである。仮想環境を有効化した状態で使用する。
pip install <package> # インストール
pip install -r requirements.txt # 依存関係を一括インストール
pip list # インストール済み一覧
pip freeze > requirements.txt # 依存関係をファイル出力
詳細は別ページ »で説明している。
Jupyter Notebook/JupyterLab
Webブラウザ上でコード実行、テキスト記述、グラフ表示を組み合わせた「ノートブック」を作成できる環境である。JupyterLabは、ファイルブラウザやタブ表示を備えたインターフェースである。
pip install notebook jupyterlab
jupyter notebook # Notebook起動
jupyter lab # JupyterLab起動
詳細はJupyter Notebook/JupyterLabのページで説明している。
Python IDE(統合開発環境)
コードエディタ、デバッグ、プロジェクト管理等を統合したソフトウェアである。
- Spyder: 科学技術計算向け。変数エクスプローラーやIPythonコンソールを備える。詳細は別ページ »
- PyCharm: JetBrains製のIDE。コード補完やリファクタリング機能を備える。詳細は別ページ
- VS Code: Microsoft製のエディタ。拡張機能によりPython開発環境を構築できる。詳細は別ページ
Anaconda Distribution
Python本体とデータサイエンス系パッケージ(NumPy、Pandas等)、パッケージ管理ツールcondaを同梱したディストリビューションである。condaはpipやvenvとは別のパッケージ管理体系であるため、混在させる場合は導入元を統一するなどの管理が必要である。
詳細は別ページで説明している。
Google Colaboratory(Colab)
Googleが提供するクラウドベースのPython実行環境である。Jupyter Notebook互換のインターフェースで、無料枠でGPU等のアクセラレータを利用できる。セッション終了時に仮想マシン上のデータは消去されるため、必要なファイルはGoogle Driveやローカルに保存する。
詳細は別ページおよび「Linux基本コマンドとその活用法 - Google Colaboratory」で説明している。
8. プログラミング用ツール類(Git、CMake、GDB)
バージョン管理システムGit
Gitは、ソースコードの変更履歴を記録・管理する分散型バージョン管理システムである。変更内容・日時・変更者が記録され、過去の状態への復元や差分比較ができる。複数人での開発では、変更の統合や競合の解決に用いられる。
インストール
sudo apt update
sudo apt install git
基本操作
git clone https://github.com/user/repo.git # リポジトリを複製
cd repo
git status # 変更状態を確認
git add . # 変更をステージング
git commit -m "変更内容" # コミット
git push # リモートに反映
詳細は「Linux基本コマンドとその活用法 - Git」で説明している。
【サイト内の関連ページ】WindowsでのGit: 別ページ »
【外部ページ】Git公式: https://git-scm.com/
ビルドツールCMake
CMakeは、C/C++プロジェクトのビルド手順を管理するクロスプラットフォームツールである。CMakeLists.txtに設定を記述し、使用環境に応じたビルドファイル(Makefile、Ninja、Visual Studioプロジェクト等)を生成する。
インストール
sudo apt update
sudo apt install cmake cmake-curses-gui cmake-gui
基本操作
ソースディレクトリとは別のディレクトリでビルドする「アウトオブソースビルド」を行う。生成物がソースツリーに混在しない。
mkdir build && cd build # ビルドディレクトリ作成
cmake .. # 設定生成(親ディレクトリのCMakeLists.txtを参照)
make # ビルド実行
Ninjaビルドシステム
Ninjaは、ビルドの実行速度を重視して設計されたビルドシステムである。CMakeのジェネレータとして指定して使用できる。
sudo apt install ninja-build
cmake -G Ninja .. # Ninja用ビルドファイルを生成
ninja # ビルド実行
デバッガgdb(GNU Debugger)
GDBは、C/C++等のプログラムをデバッグするツールである。ブレークポイント設定、ステップ実行、変数値の確認ができる。
sudo apt install gdb
gcc -g program.c -o program # デバッグ情報付きでコンパイル
gdb ./program # デバッガ起動
基本操作
デバッグの流れは、ブレークポイント設定、実行、停止箇所でのステップ実行と変数確認、バグ原因の特定である。主なコマンドはbreak(ブレークポイント設定)、run(実行)、next/step(ステップ実行)、print(変数表示)、continue(続行)である。
9. プログラミング言語Java
OpenJDKのインストールとJavaプログラムの実行
Javaの開発・実行にはJDK(Java Development Kit)が必要である。OpenJDKはJavaのオープンソース実装で、aptで導入できる。Ubuntu 24.04ではOpenJDK 17(openjdk-17-jdk)とOpenJDK 21(openjdk-21-jdk)が利用できる。
sudo apt update
sudo apt install openjdk-21-jdk # JDK 21をインストール
java -version # 実行環境を確認
javac -version # コンパイラを確認
複数のJDKを導入した場合は、sudo update-alternatives --config javaで使用するバージョンを選択する。
【コンパイルと実行】
// HelloWorld.java
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, Ubuntu!");
}
}
javac HelloWorld.java # コンパイル(.classファイル生成)
java HelloWorld # 実行
詳細は別ページ »で説明している。
10. オペレーティングシステムの運用保守
本章では、システムの継続運用に必要なパッケージ管理、更新作業、ドライバ管理を解説する。
Ubuntuのバージョンとコードネームの確認
バージョン番号(24.04等)やコードネーム(noble等)は、ソフトウェアの対応状況の確認やリポジトリ設定で参照する。
lsb_release -a # 詳細情報を表示
lsb_release -sc # コードネームのみ表示
パッケージ管理(apt、dpkg)
aptはパッケージのインストール・更新・削除を行うツールであり、依存関係を自動的に解決する。dpkgは個別の.debファイルを扱う低水準ツールで、依存関係の解決は行わない。
主なaptコマンド:
sudo apt update― パッケージリストを最新化sudo apt upgrade― パッケージを更新(パッケージの追加・削除を伴う更新は保留)sudo apt full-upgrade― パッケージを更新(必要に応じてパッケージの追加・削除も実行)sudo apt install <pkg>― パッケージをインストールsudo apt remove <pkg>― パッケージを削除(設定ファイルは残る)sudo apt purge <pkg>― パッケージと設定ファイルを削除sudo apt autoremove― 不要になった依存パッケージを削除apt search <keyword>― パッケージを検索apt show <pkg>― パッケージ情報を表示apt list --installed― インストール済みパッケージを一覧表示sudo apt clean― ダウンロードキャッシュを全削除sudo apt autoclean― 取得できなくなった古いキャッシュを削除
詳細は「Linux基本コマンドとその活用法 - パッケージ管理」で説明している。
システム更新
セキュリティ修正や不具合修正を適用するため、定期的に更新を行う。
手動更新
sudo apt update # パッケージリスト更新
sudo apt full-upgrade # パッケージ更新
sudo apt autoremove # 不要パッケージ削除
sudo apt autoclean # キャッシュ削除
apt upgradeはパッケージの追加・削除を伴う更新を保留するため、システム全体を更新する場合はapt full-upgradeを使用する。カーネル更新後は再起動が必要である。
自動更新(unattended-upgrades)
Ubuntuにはセキュリティ更新を自動適用するunattended-upgradesがあり、標準で有効になっている。設定は「ソフトウェアとアップデート」または/etc/apt/apt.conf.d/50unattended-upgradesで確認・変更できる。自動更新の対象はセキュリティ更新が中心であるため、上記の手動更新も定期的に実施する。
更新の運用テクニック
再起動の要否確認
カーネル更新等で再起動が必要な場合、/var/run/reboot-requiredファイルが作成される。
[ -f /var/run/reboot-required ] && echo "再起動が必要"
パッケージバージョンの固定(Hold)
特定パッケージの更新を抑止する。動作確認済みのバージョンを維持する場合に使用する。
sudo apt-mark hold <pkg> # 更新を保留
sudo apt-mark unhold <pkg> # 保留を解除
apt-mark showhold # 保留中パッケージを確認
保留したパッケージにはセキュリティ更新も適用されない。apt-mark showholdで保留中のパッケージを定期的に確認し、不要になったらsudo apt-mark unhold <pkg>で解除する。
設定ファイルの競合解決
更新時に設定ファイルを置き換えるかどうかを問われた場合は、Dで差分を表示し、変更内容を確認してから選択する。
Y: 新しい設定で置き換えN/O: 現在の設定を維持D: 差分を表示Z: シェルを起動して確認
NVIDIAドライバのインストール
NVIDIA GPUを使用する場合、プロプライエタリドライバ(NVIDIA提供の非公開ソースドライバ)をインストールすることで、グラフィック性能の向上やCUDAの利用が可能になる。
sudo ubuntu-drivers autoinstall # 推奨ドライバを自動インストール
sudo reboot # 再起動
nvidia-smi # ドライバ動作確認
バージョンを指定してインストールする場合は、次のように利用可能なドライバを確認してからパッケージ名を指定する。
ubuntu-drivers devices # 利用可能なドライバを確認
sudo apt install nvidia-driver-550 # バージョンを指定してインストール
sudo reboot
11. トラブルシューティング
本章では、Ubuntu運用時の問題診断と対処方法を解説する。基本的なトラブルシューティングは「Ubuntu システムの基本操作ガイド」で説明している。
システムログの確認(journalctl)
journalctlは、systemdが収集するシステムログ(ジャーナル)を表示する。エラー原因の調査やサービスの動作確認に使用する。
journalctl -xe # 最新ログを説明付きで表示
journalctl -u nginx.service # 特定サービスのログ
journalctl -p err -b # 今回起動後のエラー以上
journalctl -f # リアルタイム表示
主なオプション: -x説明付加、-e末尾表示、-uユニット指定、-p優先度フィルタ、-b現在ブート、-f追跡表示。
パッケージ管理の問題解決
dpkg設定の中断復旧
sudo dpkg --configure -a
依存関係の修復
sudo apt --fix-broken install
パッケージリストの再構築
sudo rm -rf /var/lib/apt/lists/*
sudo apt clean
sudo apt update
問題パッケージの強制削除
上記の方法で解決できない場合に使用する。依存関係の検査を省略するため、実行後はsudo apt --fix-broken installで整合性を回復させる。
sudo dpkg --remove --force-remove-reinstreq <pkg>
sudo apt --fix-broken install
ディスク関連の診断
使用量の確認
df -h # ファイルシステムごとの使用量
sudo du -sh /* 2>/dev/null | sort -hr | head -20 # 大きいディレクトリを特定
SMART情報(ディスク健康状態)
ディスクの自己診断機能(SMART)で健康状態やエラー履歴を確認する。
sudo apt install smartmontools
sudo smartctl -a /dev/sda
ファイルシステムチェック(fsck)
ファイルシステムの整合性を検査・修復する。電源断後の破損診断に使用する。マウント中のファイルシステムに対して直接fsckを実行するとデータ破損の原因となるため、次のように次回起動時に実行させるか、Live環境から未マウント状態で実行する。
sudo touch /forcefsck # 次回起動時にfsckを実行
sudo reboot
ネットワーク診断
接続状態の確認
ip addr show # IPアドレス確認
ip route show # ルーティング確認
resolvectl status # DNS設定確認
ping -c 4 8.8.8.8 # IP到達性確認
ping -c 4 google.com # DNS解決確認
IPアドレスへのpingは成功するがドメイン名で失敗する場合は、DNS設定を確認する。
ポート・サービスの確認
ss -tlnp # リッスン中のTCPポート
sudo lsof -i :80 # ポート80を使用するプロセス
ファイアウォールの確認
sudo ufw status verbose
sudo iptables -L -n -v
サービス管理とsystemd
サービス制御
systemctl status nginx # 状態確認
sudo systemctl start nginx # 起動
sudo systemctl stop nginx # 停止
sudo systemctl restart nginx # 再起動
sudo systemctl reload nginx # 設定再読み込み(サービス継続)
sudo systemctl enable nginx # 自動起動有効
sudo systemctl disable nginx # 自動起動無効
失敗サービスの確認
systemctl --failed
依存関係の確認
systemctl list-dependencies nginx
起動時の問題
GRUBはUbuntuの標準ブートローダーである。
GRUBメニューからの復旧
「Advanced options for Ubuntu」から以前のカーネルを選択して起動できる。カーネル更新後に起動しなくなった場合に使用する。
リカバリーモード
GRUBメニューで「(recovery mode)」を選択すると、ファイルシステムチェック、パッケージ修復、rootシェルへのアクセスができる。
カーネルパニック
カーネルが回復不能なエラーを検出した状態である。対処法:
- GRUBメニューから以前のカーネルで起動する
- リカバリーモードで、直前に導入したパッケージやドライバを削除する
- メモリやディスクなどのハードウェアを確認する
メモリ診断
動作が不安定な場合やクラッシュが繰り返される場合は、メモリの診断を行う。
free -h # メモリ使用状況
sudo apt install memtester
sudo memtester 1G 1 # 1GBを1回テスト
memtesterは使用中のメモリ領域を検査できないため、全領域を検査する場合はGRUBメニューからMemtest86+を起動する。