Ubuntuの使い方

【概要】本ページでは、Ubuntuの基本的な使い方について解説する。第1章ではインストールと初期設定、第2章ではシェルの基本操作と管理者権限、第3章では環境変数の設定方法を説明する。第4章では基本的なLinuxコマンド、第5章ではCSVファイルの扱い、第6章ではSSHによるリモート接続を取り上げる。第7章ではPython開発環境、第8章ではGitやCMakeなどの開発ツール、第9章ではJava環境の構築方法を示す。第10章ではシステムの運用保守としてパッケージ管理と更新作業、第11章ではトラブルシューティングの手法を解説する。

【この記事の対象読者】Ubuntu(Linux)環境の本格利用(開発や研究など)を行いたい学生・技術者を対象としている。コマンドライン操作の基礎から、Python・Javaによる開発環境の構築、サーバー運用までを体系的に扱う。

【重要概念】

【目次】

  1. Ubuntuのインストールとセットアップ
  2. シェルの利用、管理者権限、基本機能
  3. 環境変数とパスを通す
  4. 基本的なLinuxコマンドとリファレンス
  5. データファイル(CSV)
  6. リモート接続とプロセス継続
  7. プログラミング言語Pythonとツール
  8. プログラミング用ツール類(Git、CMake、GDB)
  9. プログラミング言語Java
  10. オペレーティングシステムの運用保守
  11. トラブルシューティング

【サイト内のUbuntu関連ページ】

【外部リソース】

1. Ubuntuのインストールとセットアップ

Ubuntuのインストールと基本的な初期設定

Ubuntu 24.04 LTS(Noble Numbat)は長期サポート版(Long Term Support: 5年間のセキュリティアップデート提供)である。導入には、公式サイトからISOイメージを入手し、Rufus等で起動用USBメディアを作成する。

インストール形式は、「既存OSとの共存(デュアルブート)」または「ディスクを削除してインストール」から選択する。後者はディスク内の全データが消去されるため、事前バックアップが必須である。インストール完了後は、管理者権限(sudo)の確認、システム更新、NVIDIAドライバや日本語入力(Mozc)の導入、ファイアウォール(ufw)の有効化を行う。

【サイト内の関連ページ】

【関連する外部ページ】

Ubuntuの詳細設定

インストール直後に行う推奨設定を以下に示す。

【サイト内の関連ページ】

ソフトウェアのインストール方法

ソフトウェアの追加方法は、GUIとCUIの2種類がある。

【サイト内の関連ページ】

2. シェルの利用、管理者権限、基本機能

ターミナルの起動方法やGNOMEデスクトップ環境での基本操作は「Ubuntu システムの基本操作ガイド」を参照。

端末

端末(ターミナル)は、コマンド入力でコンピューターを操作するインターフェースである。Ubuntu Desktopでは「GNOME Terminal」が標準で利用可能である。端末を開くとシェル(通常はbash)が起動し、プロンプト(コマンド入力待ちを示す記号列)が表示される。

GNOME Terminalのスクリーンショット

bashシェル

bash(Bourne Again SHell)はLinuxの標準シェルである。コマンド履歴(↑↓キー)、Tab補完、リダイレクト、パイプ、シェルスクリプトによる自動化など、多彩な機能を持つ。

管理者権限での実行(su、sudo)

日常作業は一般ユーザー権限で行い、システム変更時のみ管理者権限を使用する。

シェルの基本機能(リダイレクト、パイプ)

シェルはコマンドの入出力を柔軟に制御できる。

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アカウントはデフォルトで無効である。管理作業はsudoで行う。rootパスワードの設定が必要な場合はsudo passwd rootを実行するが、通常は不要である。

ヒアドキュメント(here document)

複数行のテキストをコマンドの標準入力として埋め込む機能である。設定ファイルの生成やメッセージ表示に使用する。

cat > /tmp/message.txt << 'EOF'
1行目のテキスト
2行目のテキスト
EOF

区切り文字(上例ではEOF)をクォートすると、変数展開が抑制される。

リソース制限(ulimit)

ulimitは、シェルとその子プロセスが使用できるリソース(ファイル数、メモリ等)の上限を確認・設定する。

ulimit -a    # 全制限値を表示

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コマンドで確認できる。

包括的なリファレンスは「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は、暗号化された通信で他のコンピューターにログインし、コマンド実行やファイル転送を行うプロトコルである。Linux環境でのリモート操作の標準手段となっている。

ssh user@hostname              # リモートログイン
ssh -i ~/.ssh/id_rsa user@host # 秘密鍵を指定して接続
ssh user@host 'uptime'         # リモートでコマンド実行

SSHの公開鍵認証

パスワードの代わりに鍵ペア(秘密鍵・公開鍵)で認証する方式である。パスワード入力が不要になり、スクリプトによる自動化に適している。

  1. 鍵ペアの生成: クライアントでssh-keygenを実行する。
  2. 公開鍵の登録: ssh-copy-id user@hostでサーバーの~/.ssh/authorized_keysに公開鍵を追加する。
  3. 接続: ssh user@hostで鍵認証によりログインする。

注意: 秘密鍵(~/.ssh/id_rsa等)はchmod 600でパーミッションを設定し、漏洩を防ぐ。秘密鍵が流出すると不正アクセスの原因となる。

設定手順の詳細は別ページ »を参照。

SFTP/SCP

SSHを利用した安全なファイル転送コマンドである。

sftp user@host                              # 対話セッション開始
scp myfile.txt user@host:/home/user/        # ファイルをアップロード
scp user@host:/var/log/syslog .             # ファイルをダウンロード

リモート接続が切れてもプロセスを継続する(nohup、disown)

SSH切断後も長時間の処理を継続させる方法を示す。

指定時刻にコマンドを実行(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バージョンの管理(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 NotebookJupyterLabのページを参照。

Python IDE(統合開発環境)

コードエディタ、デバッグ、プロジェクト管理等を統合したソフトウェアである。

Anaconda Distribution

Python本体とデータサイエンス系パッケージ(NumPy、Pandas等)、パッケージ管理ツールcondaを同梱したディストリビューションである。環境構築が容易だが、pipやvenvとは異なる管理体系のため、使い分けの理解が必要である。

詳細は別ページを参照。

Google Colaboratory(Colab)

Googleが提供するクラウドベースのPython実行環境である。Jupyter Notebook互換のインターフェースで、GPU/TPUを無料枠で利用できる。セッション終了時にデータが消去されるため、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++等のプログラムをデバッグするツールである。ブレークポイント設定、ステップ実行、変数値確認などが可能である。

gcc -g program.c -o program  # デバッグ情報付きでコンパイル
gdb ./program                # デバッガ起動

基本操作

デバッグの流れ: ブレークポイント設定 → 実行 → 停止箇所でステップ実行・変数確認 → バグ原因特定。主なコマンドはbreak(ブレークポイント)、run(実行)、next/step(ステップ実行)、print(変数表示)、continue(続行)である。

9. プログラミング言語Java

OpenJDKのインストールとJavaプログラムの実行

Javaの開発・実行にはJDK(Java Development Kit)が必要である。OpenJDKはオープンソース実装で、aptで導入できる。

sudo apt update
sudo apt install openjdk-17-jdk    # JDK 17をインストール
java -version                       # 実行環境を確認
javac -version                      # コンパイラを確認

Ubuntu 24.04ではOpenJDK 21(openjdk-21-jdk)も利用可能である。

【コンパイルと実行】

// HelloWorld.java
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, Ubuntu!");
    }
}
javac HelloWorld.java    # コンパイル(.classファイル生成)
java HelloWorld          # 実行

詳細は別ページ »を参照。

【サイト内のJava関連資料】

10. オペレーティングシステムの運用保守

本章では、システムの継続運用に必要なパッケージ管理、更新作業、ドライバ管理を解説する。

Ubuntuのバージョンとコードネームの確認

バージョン番号(24.04等)やコードネーム(noble等)は、ソフトウェア互換性の確認やリポジトリ設定で参照する。

lsb_release -a     # 詳細情報を表示
lsb_release -sc    # コードネームのみ表示

パッケージ管理(apt、dpkg)

aptはパッケージのインストール・更新・削除を行うツールである。dpkgは個別の.debファイルを扱う低水準ツールで、通常はaptを使用する。

主なaptコマンド:

詳細は「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              # 保留中パッケージを確認

注意: 保留したパッケージはセキュリティ更新も適用されないため、定期的に見直す。

設定ファイルの競合解決

更新時に「設定ファイルを置き換えるか」と問われた場合は、D(差分表示)で変更内容を確認してから判断する。

NVIDIAドライバのインストール

NVIDIA GPUを使用する場合、プロプライエタリドライバ(NVIDIA提供の非公開ソースドライバ)をインストールすることで、グラフィック性能向上やCUDA利用が可能になる。

sudo ubuntu-drivers autoinstall    # 推奨ドライバを自動インストール
sudo reboot                        # 再起動
nvidia-smi                         # ドライバ動作確認

特定バージョンのインストールや問題発生時は、別途手順が必要である。

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 dpkg --remove --force-remove-reinstreq <pkg>

ディスク関連の診断

使用量の確認

df -h                                  # ファイルシステムごとの使用量
du -sh /* 2>/dev/null | sort -hr | head -20   # 大きいディレクトリを特定

SMART情報(ディスク健康状態)

ディスクの自己診断機能(SMART)で健康状態やエラー履歴を確認する。

sudo apt install smartmontools
sudo smartctl -a /dev/sda

ファイルシステムチェック(fsck)

ファイルシステムの整合性を検査・修復する。電源断後のデータ破損診断に使用する。

sudo touch /forcefsck    # 次回起動時にfsckを実行
sudo reboot

注意: マウント中のファイルシステムにfsckを実行するとデータ破損の原因となる。

ネットワーク診断

接続状態の確認

ip addr show           # IPアドレス確認
ip route show          # ルーティング確認
cat /etc/resolv.conf   # 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シェルアクセスが可能である。

カーネルパニック

カーネルが回復不能なエラーを検出した状態である。対処法:

  1. GRUBから以前のカーネルで起動
  2. リカバリーモードで最近のパッケージ/ドライバを削除
  3. ハードウェア(メモリ、ディスク)を確認

メモリ診断

不安定動作やランダムクラッシュ時はメモリを疑う。

free -h                         # メモリ使用状況
sudo apt install memtester
sudo memtester 1G 1             # 1GBを1回テスト

詳細なハードウェアテストはGRUBメニューからMemtest86+を起動する。