Linuxとは
LinuxはOSの中心部分であるLinuxカーネルと、その周辺ソフトウェアを組み合わせて使うOSです。Webサーバー、クラウド、組み込み機器、開発環境などで利用されています。
- カーネル:CPU、メモリ、機器などを管理する中心部分
- ディストリビューション:カーネル、コマンド、パッケージ管理などをまとめた配布形態
- シェル:入力したコマンドを解釈するプログラム。例では主にBashを使用
- ターミナル:シェルを操作するための画面
uname -srLinux 6.8.0-52-genericバージョン番号は環境によって異なります。表示が例と違っても異常ではありません。
ディストリビューションと系統の違い
基本的なファイル操作は多くのLinuxで共通ですが、パッケージ形式、管理コマンド、設定ファイル名などが異なります。
| 系統 | 代表例 | パッケージ | 主な管理コマンド |
|---|---|---|---|
| Debian系 | Debian、Ubuntu、Linux Mint | .deb | apt、低水準はdpkg |
| Red Hat系 | RHEL、Fedora、Rocky Linux、AlmaLinux | .rpm | dnf、低水準はrpm |
| SUSE系 | SLES、openSUSE | .rpm | zypper |
| Arch系 | Arch Linux、Manjaro | .pkg.tar.zst | pacman |
同じ系統でも版や設定によって差があります。まず自分の環境を確認します。
cat /etc/os-releaseNAME="Ubuntu"
VERSION="24.04.1 LTS (Noble Numbat)"
ID=ubuntu
ID_LIKE=debianIDはそのOS、ID_LIKEは近い系統を判断する手掛かりです。名前だけを見て別系統用のコマンドを実行しないようにします。
安全な練習環境を用意する
実機へ直接インストールしなくても、WindowsのWSL、仮想マシン、不要なコンテナなどで練習できます。以下では一般ユーザーでログイン済みとします。
sudoを付けず、削除前はpwdとlsで対象を確認します。mkdir -p ~/linux-practice
cd ~/linux-practice
pwd/home/mity/linux-practice~は現在のユーザーのホームディレクトリです。以降の作成・削除例はこの練習場所で実行します。
コマンドの形とヘルプ
多くのコマンドは「コマンド名 オプション 引数」の順です。空白が区切りになります。
ls -l /etc/hostname-rw-r--r-- 1 root root 8 Aug 29 09:00 /etc/hostnamelsがコマンド、-lが表示方法を変えるオプション、/etc/hostnameが対象です。使い方は推測せずヘルプを読みます。
ls --help
man lsSpaceで次へ、bで前へ、/wordで検索、qで終了します。最小構成ではmanページが未導入の場合があります。現在地とファイル一覧
pwd
ls -la
cd /tmp
pwd
cd -/home/mity/linux-practice
total 8
drwxr-xr-x 2 mity mity 4096 Aug 29 10:00 .
drwx------ 8 mity mity 4096 Aug 29 09:50 ..
/tmp
/home/mity/linux-practice.は現在地、..は一つ上、cd -は直前の場所です。ls -aは名前がドットで始まる隠しファイルも表示します。
ファイルとディレクトリを操作する
cd ~/linux-practice
mkdir reports
touch reports/today.txt
cp reports/today.txt reports/backup.txt
mv reports/backup.txt reports/yesterday.txt
ls reportstoday.txt yesterday.txtmkdirはディレクトリ作成、touchは空ファイル作成、cpはコピー、mvは移動または改名です。
cp -i、mv -iなら上書き前に確認できます。rmの削除は通常ごみ箱へ入らず、rm -rは中身ごと削除します。対象をlsで確認してから使ってください。パス、ワイルドカード、リンク、削除の安全策はファイルとディレクトリで詳しく扱います。
ファイルの内容を見る
printf 'apple\norange\ngrape\n' > fruits.txt
cat fruits.txt
head -n 2 fruits.txt
tail -n 1 fruits.txtapple
orange
grape
apple
orange
grape>は出力先を新規作成または上書きし、>>は末尾へ追記します。長いファイルはless fruits.txtでスクロールできます。
文字列とファイルを検索する
grep -n 'orange' fruits.txt
find . -type f -name '*.txt'2:orange
./fruits.txt
./reports/today.txt
./reports/yesterday.txtgrep -nは一致した行番号も表示します。findの.は検索開始位置、-type fは通常ファイル、-nameは名前の条件です。*.txtはシェルに先に展開されないよう引用符で囲みます。
ユーザーと権限
whoami
id
ls -l fruits.txtmity
uid=1000(mity) gid=1000(mity) groups=1000(mity),27(sudo)
-rw-r--r-- 1 mity mity 19 Aug 29 10:10 fruits.txtrw-、r--、r--は所有者・グループ・その他の読み書き実行権限です。実行用スクリプトにはchmod u+x script.shのように必要な権限だけを追加します。
sudoは管理者権限でコマンドを実行します。エラーを消すために闇雲に使わず、対象と影響を確認してください。chmod 777は誰でも書き込めるため、安易な解決策にしません。数値表記、所有者、sudoはユーザーと権限で学びます。
パッケージを管理する
ここが系統による代表的な違いです。curlを例にすると、対話操作では次のようになります。
| 操作 | Debian/Ubuntu | RHEL/Fedora/Rocky/Alma |
|---|---|---|
| 情報更新 | sudo apt update | sudo dnf makecache |
| 検索 | apt search curl | dnf search curl |
| インストール | sudo apt install curl | sudo dnf install curl |
| 全体更新 | sudo apt upgrade | sudo dnf upgrade |
| 削除 | sudo apt remove curl | sudo dnf remove curl |
curl --version | head -n 1curl 8.5.0 (x86_64-pc-linux-gnu) ...版は環境で異なります。apt updateはソフト本体の更新ではなく「入手可能な一覧」の更新です。詳しくはディストリビューションとパッケージ管理で比較します。
プロセスとサービス
ps -p $$ -o pid,comm PID COMMAND
2451 bash実行中のプログラムをプロセスと呼び、番号がPIDです。多くの現在のディストリビューションでは常駐サービスをsystemctlで確認します。
systemctl status ssh --no-pagerssh、RHEL系ではsshdのように名前が異なる場合があります。systemctl list-unit-files --type=serviceで確認します。ネットワークを確認する
ip -brief address
ss -lntlo UNKNOWN 127.0.0.1/8 ::1/128
eth0 UP 192.0.2.10/24
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 4096 127.0.0.1:8000 0.0.0.0:*127.0.0.1は自分自身、ss -lntはTCPの待受ポートを名前解決せず表示します。IPアドレスや待受ポートは環境ごとに異なります。詳しくはプロセス・サービス・ネットワークで学びます。
練習問題
問題1:ログ用ディレクトリを作る
~/linux-practiceにlogsを作り、app.logへ「started」を保存して表示してください。
cd ~/linux-practice
mkdir -p logs
printf 'started\n' > logs/app.log
cat logs/app.logstarted問題2:OSの系統を調べる
/etc/os-releaseからIDとID_LIKEを表示してください。
grep -E '^(ID|ID_LIKE)=' /etc/os-releaseID=ubuntu
ID_LIKE=debian次に学ぶこと
本編は左から順に進みます。
