コマンドは「動詞 + 対象 + 条件」で読む
Linuxコマンドは英単語の省略形が多く、名前の由来を知ると覚えやすくなります。たとえば ls -la /etc は「ls(list=一覧にする)」「-l -a(詳しく・隠しファイルも)」「/etc(対象)」と分解できます。
各カード右上の札は、その操作の種類と注意の度合いを表します。「参照」「通信」は見るだけで、システムは変わりません。「作成」「変更」「移動」はファイルが変わります。「権限変更」「所有者変更」「管理者権限」「停止」「設定反映」はシステムやサービスに影響するため、実行前に対象と理由を確認します。
練習は自分専用の環境で行います。Linux仮想マシン(パソコンの中に作る仮想のコンピューター)、WSL(Windows Subsystem for Linux/WindowsでLinuxを動かす仕組み)、コンテナ(Linux環境を軽く切り分けて動かす仕組み)のどれかを使います。会社・学校・公開中サーバーでは勝手に実行しません。このページの実行例は教材です。掲載したコマンドをすべて実機で実行した証跡(実行した証拠として残す記録)ではありません。
VM/WSLをまだ用意していない場合は、先に環境準備ガイドを行ってください。
1. 現在地とファイル操作
覚え方:今 → 見る → 移る → 作る → 写す → 動かすpwd → ls → cd → mkdir/touch → cp → mv
pwd参照今いる場所を表示
print working directory の略。迷ったら最初に実行します。
$ pwd
/home/student確認:出力が / から始まる絶対パス(一番上の階層からたどった住所のような書き方)なら、現在地を確認できています。
ls参照ファイルを一覧表示
list の略。-l は詳細、-a は隠しファイル、-h は容量を読みやすくします。
$ ls -lah /var/log
-rw-r----- 1 syslog adm 12K Aug 28 syslog読む:1行は左から順に、権限、リンク数(そのファイルを指す名前の数)、所有者、グループ、容量、更新日、名前を表します。
cd移動作業場所を移動
change directory の略。cd .. は1つ上、cd - は直前、cd はホームへ戻ります。
$ cd /etc/nginx
$ pwd
/etc/nginx確認:移動後に pwd を実行します。
mkdir / touch作成ディレクトリ / 空ファイルを作成
mkdir -p は途中の階層も作成します。touch は存在しないファイル名を指定すると空ファイルを新規作成し、既存ファイルなら更新日時だけを変えます。
$ mkdir -p ~/linux-practice/logs
$ touch ~/linux-practice/README.txt確認:ls -l ~/linux-practice で作成結果を見ます。
cp変更ファイルを複製
copy の略。設定変更前のバックアップに使います。-i は上書き前に確認します。
$ cp -i app.conf app.conf.bak
$ diff -u app.conf app.conf.bak確認:diff が何も表示しなければ内容は同じです。
mv変更移動または名前変更
move の略。移動先が同じディレクトリなら名前変更になります。
$ mv -i old-name.txt new-name.txt
$ ls -l new-name.txt注意:上書きを避ける練習では -i を付けます。
2. ファイルを読む・探す
cat / less参照短い / 長いファイルを読む
cat は全文表示、less は1画面ずつ表示。lessは / で検索、n で次、q で終了します。
$ less /etc/ssh/sshd_config使い分け:設定やログが長いときは less が安全です。
head / tail参照先頭 / 末尾だけ読む
-n で行数を指定。tail -f は追記を監視します。
$ tail -n 20 /var/log/syslog
$ sudo journalctl -f終了:監視は Ctrl + C で止めます。
grep参照文字を含む行を探す
-i は大文字小文字を無視、-n は行番号、-r は階層を検索します。
$ grep -in "error" app.log
42:ERROR database timeout確認:終了コード(コマンドが終わるときに返す結果の番号)が0なら一致あり、1なら一致なしです。
find参照条件でファイルを探す
「どこから」「何を条件に」の順で読みます。ワイルドカード(* のように任意の文字列を表す記号)は引用符で囲みます。
$ find /var/log -type f -name "*.log" -mtime -1意味:24時間以内に更新された、名前が .log で終わる通常ファイル。
du / df参照使用量 / ディスク全体を確認
du は指定したファイルやディレクトリの使用量を確認します。df はファイルシステム(OSがディスクを管理する単位)ごとの空き状況を確認します。
$ du -sh /var/log
$ df -hT覚え方:du=どこが使用、df=どのディスクが満杯。
man / --help参照正しい使い方を調べる
manual の略。説明書は / で検索し、q で終了します。
$ man systemctl
$ systemctl --help習慣:記憶が曖昧なオプションは実行前に確認します。
3. ユーザーと権限
かんたんに言うとLinuxではファイル1つずつに「誰が読めるか・書けるか・実行できるか」が決められています。この節では、その許可の読み方と変え方を扱います。
r は読む(4)、w は書く(2)、x は実行する(1)。そのため 750 は、所有者=7(4+2+1)、グループ=5(4+1)、その他=0です。
whoami / id参照自分と所属グループを確認
$ whoami
student
$ id
uid=1000(student) gid=1000(student) groups=1000(student),27(sudo)実務:権限エラーが出たら、まず「誰として操作しているか」を確認します。uidは利用者の番号、gidは所属グループの番号、groupsは所属するグループの一覧です。このgroups欄にsudo(またはwheel)が含まれていない場合は、以降のsudo例が実行できません。VM作成時の設定を確認してください。
chmod権限変更許可を変更
change mode の略。実行権限の追加は u+x のような記号表記でも指定できます。
$ chmod u+x deploy.sh
$ chmod 640 app.conf
$ stat -c '%A %a %n' app.conf注意:777 は誰でも変更できるため安易に使いません。
chown所有者変更所有者・グループを変更
change owner の略。多くの場合、管理者権限が必要です。
$ sudo chown root:www-data app.conf
$ ls -l app.conf注意:-R は配下すべてを変えるため、対象を事前確認します。
sudo管理者権限許可されたコマンドを管理者権限で実行
superuser do(スーパーユーザーとして実行する)の略です。必要な1コマンドだけに付けます。実行する理由と影響を理解してから使います。sudo -l は、自分にどのコマンドが許可されているかを確認するために実行します。
$ sudo -l
$ sudo systemctl status nginx原則:参照だけなら、まず一般ユーザーで試します。
4. OS・負荷・プロセス
uname / os-release参照OS情報を確認
$ uname -r
6.8.0-xx-generic
$ cat /etc/os-release使いどころ:手順書が対象OS・バージョンに合うか確認します。
uptime参照稼働時間と平均負荷を確認
$ uptime
14:20 up 3 days, 2:10, 1 user, load average: 0.15, 0.10, 0.05読む:右端の load average(平均負荷)は、過去1分・5分・15分の実行待ちの多さの目安です。CPUの数や普段の値と比べて判断します。
free参照メモリを確認
$ free -h
total used free shared buff/cache available
Mem: 7.7Gi 2.1Gi 1.8Gi 120Mi 3.8Gi 5.2Gi読む:free列は完全に空いているメモリです。アプリが実際に使える量はbuff/cacheから回せる分も含むため、判断にはavailable列を見ます。
ps / top参照動作中のプロセスを確認
$ ps aux --sort=-%cpu | head
$ top用語:プロセスとは、実行中のプログラム1つ1つのことです。PIDはそのプロセスに付く番号です。ps aux --sort=-%cpu | head は、CPUを多く使っている順に上位だけを表示し、負荷の原因を絞り込むために実行します。topは q で終了します。
kill停止プロセスへ終了要求を送る
プロセスにはシグナル(合図の番号)を送って終了を依頼します。通常はTERM(15)を送り、後片付けをしてから安全に終わってもらいます。KILL(9)は強制終了で、最終手段です。上のpsコマンドで確認したPID(例では1234)を指定します。
$ kill -TERM 1234
$ ps -p 1234注意:原因・影響・自動再起動の有無を確認してから実行します。
5. サービスとログ
かんたんに言うとサーバーで常に動き続けるプログラムを「サービス」と呼びます。それを起動・停止・監視する仕組みがsystemd(システムディー)です。この節では、状態をsystemctlで見て、動きの記録(ログ)をjournalctlで読む流れを扱います。
systemctl操作別サービスを確認・操作
$ systemctl status nginx
● nginx.service - A high performance web server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled)
Active: active (running) since Mon 2026-08-31 09:12:03 JST; 3h ago
Main PID: 812 (nginx)
$ systemctl is-enabled nginx
$ systemctl --failed読む:Active:行のactive (running)と稼働時間、Main PIDを確認します。順番:status → 設定やログ確認 → 承認後に restart → 再度status。
journalctl参照systemdログを読む
$ sudo journalctl -u nginx --since "30 min ago"
Aug 31 09:12:03 server01 systemd[1]: Started A high performance web server.
Aug 31 09:12:05 server01 nginx[812]: 2026/08/31 09:12:05 [notice] start worker processes
$ sudo journalctl -p err -b読む:各行は日時、ホスト名、ユニット名(systemdが管理するサービスの単位に付いた名前)、メッセージの順に並びます。-u は対象、-p は重要度、-b は今回の起動以降で絞り込みます。
systemctl reload設定反映停止せず設定を再読込
$ sudo nginx -t
$ sudo systemctl reload nginx
$ systemctl status nginx安全策:先に nginx -t で設定ファイルの書式を検査します。書式の誤りに気づかないまま再読み込みすると、サービスが止まるおそれがあるためです。なお、再読み込み(reload)に対応していないサービスもあります。
6. ネットワーク
確認順:自分 → 道 → 名前 → 相手 → 受付口ip addr → ip route → getent hosts → ping/curl → ss
ip参照IPアドレスと経路を確認
$ ip -br addr
$ ip route読む:自分のIPアドレスと、ネットワークの接続口(インターフェース)が有効かどうかを確認します。あわせて、外へ出るときの既定の出口であるデフォルトゲートウェイ(default gateway)も確認します。
getent hosts参照名前解決を確認
$ getent hosts example.com
93.184.216.34 example.com切り分け:名前(example.comなど)では失敗し、IPアドレスの指定では成功する場合は、DNS(名前をIPアドレスに変換する仕組み)を疑います。
ping通信ICMP応答を確認
$ ping -c 4 192.0.2.10意味:相手にICMP(機器同士が疎通の確認に使う通信の種類)で問い合わせ、返事が返るかを見ます。注意:pingを禁止している相手もあるため、失敗しただけで停止とは断定しません。
curl通信HTTP応答を確認
$ curl -I --max-time 5 http://localhost
HTTP/1.1 200 OK読む:1行目の数字はHTTP(Webのやり取りの決まりごと)の応答コードです。200は成功、400番台(4xx)は要求した側、500番台(5xx)はサーバー側に問題がある目安です。
ss参照待受ポートを確認
$ sudo ss -tulnp
LISTEN 0 511 0.0.0.0:80 ... nginx意味:ポート(サービスごとの受付番号)のうち、接続を待っているものを一覧にします。オプションは、t がTCP(確実に届ける通信方式)、u がUDP(速さ優先の通信方式)、l が待受中のみ、n が数値表示、p が使用中のプロセス表示です。
ssh接続別のLinuxへ安全に接続
$ ssh -i ~/.ssh/lab_key student@192.0.2.10
The authenticity of host '192.0.2.10 (192.0.2.10)' can't be established.
ED25519 key fingerprint is SHA256:EXAMPLE1234fakeFingerprint5678.
Are you sure you want to continue connecting (yes/no/fingerprint)?初回確認:初回の接続では、相手の鍵のfingerprint(指紋にあたる短い識別文字列)が表示されます。この値を、VM作成時のコンソール出力やクラウドの管理画面に表示された値と照合します。個人学習環境では、その値と一致する場合だけyesと答え、一致しない・照合できない場合は接続を中断します。
7. ソフトウェアの管理
パッケージとは、ソフトを導入しやすい形にまとめたものです。apt や dnf は、リポジトリ(配布元の保管庫)から必要なパッケージを取り寄せて導入します。次の表は、Ubuntu系(Debian系)とRHEL系(Red Hat Enterprise Linux系)で使うコマンドの対応です。
| 目的 | Ubuntu / Debian | RHEL / Rocky Linux |
|---|---|---|
| パッケージ情報更新 | sudo apt update | sudo dnf check-update |
| 検索 | apt search nginx | dnf search nginx |
| インストール | sudo apt install nginx | sudo dnf install nginx |
| 導入済み確認 | dpkg -l nginx | rpm -q nginx |
次の8点を確認します。対象OS、配布元のリポジトリ、変更されるパッケージ、サービス再起動の有無、空き容量、バックアップの有無です。加えて、切り戻し方法(元の状態へ戻す手順)と、作業してよい時間帯も確認します。本番相当環境で一括更新を無断実行しません。
8. コマンドを組み合わせる記号
かんたんに言うとコマンドの結果は、画面に出すだけでなく、別のコマンドへ渡したりファイルへ保存したりできます。ここで紹介する4つの記号が、その渡し先を指定する道具です。
|パイプ
左の出力を右へ渡す。
journalctl -u nginx | grep -i error>上書き保存
出力先を新規作成または上書き。
date > check.txt>>追記保存
既存内容の末尾へ追加。
df -h >> check.txt&&成功したら次へ
左が成功した場合だけ右を実行。
nginx -t && echo "syntax OK"9. よくあるエラーメッセージと意味
操作を止めて、原因を1つずつ確認します。より詳しい切り分け表は初心者向けエラーFAQを参照してください。
command not found入力コマンド名が見つからない
綴りの誤り、または未導入のコマンドです。綴りと使っているシェル(コマンドを受け付ける入力窓口のソフト)とOSを確認し、教材の前提に合わせて再実行します。
Permission denied権限権限が不足している
実行・読取・変更のいずれかの権限がありません。ls -l 対象で所有者と権限を確認し、必要な範囲だけsudoを付けて再実行します。
No such file or directoryパス指定した場所に対象がない
パスや名前の誤り、または現在地の勘違いです。pwdとls -laで現在地、綴り、大文字小文字を確認してから再実行します。
user is not in the sudoers file管理者権限sudoを許可されていない
そのユーザーがsudoグループ(またはsudoers設定)に含まれていません。個人学習環境ではVM作成時に作った管理者アカウント設定を確認し、必要なら管理者アカウントでsudoersへ追加します。
10. 15分でできる安全な練習
- 場所を作る
mkdir -p ~/linux-practice/logs && cd ~/linux-practicepwdでホーム配下にいることを確認。 - ファイルを作る
printf 'INFO start\nERROR timeout\n' > logs/app.log\nは改行を表す特殊な書き方です。cat logs/app.logで2行を確認。 - 探す
grep -n 'ERROR' logs/app.log2:ERROR timeoutが出れば成功。 - 複製する
cp -i logs/app.log logs/app.log.bakdiff -uで差がないことを確認。 - 権限を読む
stat -c '%A %a %n' logs/app.log記号と数字の権限を対応させる。 - 記録を残す
{ date; uname -r; df -h /; } > server-check.txt日時、OSのバージョン、ディスクの空きをまとめて1つのファイルに保存します。作業前後の状態を後から示せるようにするためです。less server-check.txtで読みます。
理解度チェック(答えを見る)
- Q1. 今いる場所を確かめるコマンドは?
pwd。作業前と削除前の確認に使います。- Q2. 長いログから error を大文字小文字を問わず探すには?
grep -i 'error' ファイル名。- Q3. サービス再起動の前にすることは?
- 現状、ログ、設定構文、影響範囲、承認、戻し方を確認します。
- Q4.
chmod 640の意味は? - 所有者は読み書き、グループは読み取り、その他は権限なしです。