Welcome

Linux Command Handbook意味から覚えるLinuxコマンド集

学習用 / Ubuntu・RHEL系Linux

コマンドは「動詞 + 対象 + 条件」で読む

Linuxコマンドは英単語の省略形が多く、名前の由来を知ると覚えやすくなります。たとえば ls -la /etc は「ls(list=一覧にする)」「-l -a(詳しく・隠しファイルも)」「/etc(対象)」と分解できます。

command何をする-optionどう実行するargument何を対象にする

各カード右上の札は、その操作の種類と注意の度合いを表します。「参照」「通信」は見るだけで、システムは変わりません。「作成」「変更」「移動」はファイルが変わります。「権限変更」「所有者変更」「管理者権限」「停止」「設定反映」はシステムやサービスに影響するため、実行前に対象と理由を確認します。

安全な練習場所

練習は自分専用の環境で行います。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つずつに「誰が読めるか・書けるか・実行できるか」が決められています。この節では、その許可の読み方と変え方を扱います。

- rwx r-x r--- 種類rwx 所有者r-x グループr-- その他

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)に対応していないサービスもあります。

障害対応の基本① 時刻を記録② statusを見る③ ログを見る④ 仮説を立てる⑤ 承認後に変更⑥ 復旧を再確認

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. ソフトウェアの管理

パッケージとは、ソフトを導入しやすい形にまとめたものです。aptdnf は、リポジトリ(配布元の保管庫)から必要なパッケージを取り寄せて導入します。次の表は、Ubuntu系(Debian系)とRHEL系(Red Hat Enterprise Linux系)で使うコマンドの対応です。

Ubuntu系とRHEL系の主な対応
目的Ubuntu / DebianRHEL / Rocky Linux
パッケージ情報更新sudo apt updatesudo dnf check-update
検索apt search nginxdnf search nginx
インストールsudo apt install nginxsudo dnf install nginx
導入済み確認dpkg -l nginxrpm -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パス

指定した場所に対象がない

パスや名前の誤り、または現在地の勘違いです。pwdls -laで現在地、綴り、大文字小文字を確認してから再実行します。

user is not in the sudoers file管理者権限

sudoを許可されていない

そのユーザーがsudoグループ(またはsudoers設定)に含まれていません。個人学習環境ではVM作成時に作った管理者アカウント設定を確認し、必要なら管理者アカウントでsudoersへ追加します。

10. 15分でできる安全な練習

  1. 場所を作るmkdir -p ~/linux-practice/logs && cd ~/linux-practicepwd でホーム配下にいることを確認。
  2. ファイルを作るprintf 'INFO start\nERROR timeout\n' > logs/app.log\nは改行を表す特殊な書き方です。cat logs/app.log で2行を確認。
  3. 探すgrep -n 'ERROR' logs/app.log2:ERROR timeout が出れば成功。
  4. 複製するcp -i logs/app.log logs/app.log.bakdiff -u で差がないことを確認。
  5. 権限を読むstat -c '%A %a %n' logs/app.log記号と数字の権限を対応させる。
  6. 記録を残す{ 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 の意味は?
所有者は読み書き、グループは読み取り、その他は権限なしです。

次の学習へ

基本操作を覚えたら、実際の問い合わせを想定した「重・空・動・記・通・入・壁」の順で切り分けを練習します。

Linux基本確認へ進む読み取り専用スクリプトを見る