🐧 Linux 総合学習プラットフォーム

Linux コマンド チートシート

よく使う Linux コマンドをカテゴリ別にまとめた早見表です。コマンド名をクリックすると詳しい使い方ページへ移動します。

GPIO

gpiodetectシステム上のGPIOチップ(gpiochip)を一覧する(libgpiod)。
gpioinfo各ライン(ピン)の名前・方向・予約状況を表示する。
gpioget指定ラインの入力値(0/1)を読み取る。
gpioset指定ラインに出力値(0/1)を設定する。
pinctrl新しめのRaspberry Pi環境でピンの機能・状態を確認/設定するツール。
raspi-gpioGPIOピンの現在の状態(入出力の向きやレベル)を確認・設定する。
pinoutGPIOヘッダのピン配置を図として表示する。配線前の確認に使う。

I2C

i2cdetectI2Cバス上の機器のアドレス一覧を表示する(i2c-tools)。
i2cgetI2C機器の指定レジスタを読み取る。
i2csetI2C機器の指定レジスタに値を書き込む。

LVM

pvcreateディスクやパーティションをLVMの物理ボリューム(PV)として初期化します。LVM構成の最初のステップで、ここで作ったPVを後でVGにまとめます。
vgcreate1つ以上の物理ボリューム(PV)をまとめてボリュームグループ(VG)を作成します。VGは容量プールとなり、ここから論理ボリュームを切り出します。
lvcreateボリュームグループ(VG)のプールから論理ボリューム(LV)を切り出します。作成したLVは通常のパーティションと同様に mkfs でフォーマットして使います。

SELinux

getenforceSELinux の現在のモードを表示するコマンド。Enforcing(強制)・Permissive(警告のみ)・Disabled(無効)のいずれかを返す。
setenforceSELinux のモードを一時的に切り替えるコマンド。0 で Permissive、1 で Enforcing になる。再起動すると設定ファイルの値に戻るため、恒久変更は /et…

SSH

ssh-keygenSSH の公開鍵認証で使う、秘密鍵と公開鍵のペアを生成するコマンド。生成した秘密鍵は手元で厳重に保管し、公開鍵だけをサーバに登録する。
ssh-copy-id手元の公開鍵をリモートサーバの authorized_keys に登録するコマンド。以降はパスワードなしで鍵認証によるログインができるようになる。

U-Boot/ストレージ

ext4loadext4ファイルシステム上のファイルをメモリへ読み込む。MMCやUSBなどのストレージからカーネルやDTBをロードする際に使う。
fatloadFAT(VFAT)パーティション上のファイルをメモリへ読み込む。多くのボードでブート用の先頭FATパーティションからカーネルを読むのに使う。
mmcMMC/SDデバイスを操作・確認する。接続デバイスの一覧やパーティション情報を表示し、ロード元の指定に役立てる。

U-Boot/デバイスツリー

fdtロード済みデバイスツリー(DTB)を操作する。fdt addr で対象アドレスを登録し、fdt print で内容を確認、ノードやプロパティの書き換えもできる。

U-Boot/ネットワーク

tftpbootTFTPサーバ上のファイルを指定したメモリアドレスへ転送する。事前に ipaddr と serverip を設定しておく。開発中のカーネル差し替えに使う。
dhcpDHCPでIPアドレスを自動取得する。ファイル名を渡すと取得後にそのままTFTP転送まで行う。固定IPを設定しない開発環境で便利。

U-Boot/メモリ

md指定アドレスのメモリ内容をダンプ表示する。.b/.w/.l でバイト/ワード/ロング単位を選ぶ。ロード結果やレジスタ値の確認に使う。
mw指定アドレスのメモリへ値を書き込む。検証用にロード先を既知の値で埋めてから上書き確認するなどに使う。

U-Boot/環境変数

printenvU-Bootの環境変数を表示する。引数なしで全変数を一覧し、変数名を渡すとその値だけを表示する。現在の起動設定を確認する基本コマンド。
setenv環境変数を作成・変更する。値を省略するとその変数を削除する。変更はRAM上のみで、電源を切ると失われるため saveenv で永続化する。
saveenvRAM上の環境変数を不揮発領域(環境ストレージ)へ書き戻して永続化する。setenv での変更を次回起動以降も有効にするために実行する。

U-Boot/起動

boot環境変数 bootcmd に設定されたコマンド列を実行して起動を進める。自動起動と同じ処理を手動で開始するコマンド。
bootmメモリ上のU-Bootヘッダ付きイメージ(uImage)からカーネルを起動する。第3引数にDTBのアドレスを渡してカーネルにデバイスツリーを与える。
bootiARM64の生カーネルイメージ(Image)をメモリから起動する。bootm と異なりU-Bootヘッダを必要としない。DTBアドレスを第3引数で渡す。
bootz圧縮済みカーネル zImage(ARM)をメモリから起動する。uImageヘッダを必要とせず、DTBアドレスを第3引数で渡す。

Webサーバ

nginx軽量・高速なWebサーバ。リバースプロキシとしても使われる。
httpd (Apache)Apache HTTP Server。RHEL系ではサービス名・コマンド名ともに httpd。

アカウント

passwdユーザのパスワードを変更するコマンド。引数なしで自分のパスワードを変更でき、管理者がユーザ名を指定すると他ユーザのパスワードも変更できる。
chageパスワードの有効期限や変更間隔などのエイジング情報を確認・設定するコマンド。古いパスワードが使われ続けるのを防ぎ、定期変更を促せる。
usermod既存ユーザの設定を変更するコマンド。所属グループの追加やアカウントのロックなどに使う。管理操作のため通常は sudo で実行する。

イメージ

docker imagesローカルに保存されているイメージの一覧を表示する。
docker pullレジストリからイメージを取得する。タグ省略時は latest。
docker buildDockerfile からイメージをビルドする。-t で名前とタグを付け、最後にビルドコンテキストを渡す。
docker rmiローカルのイメージを削除する。

カーネルモジュール

lsmod現在カーネルに組み込まれているモジュールの一覧を表示する。/proc/modules を整形して見せる。
modinfoモジュールの詳細情報(パス・ライセンス・作者・依存・パラメータ等)を表示する。
insmod.ko ファイルを直接指定してモジュールを組み込む。依存関係は解決しないため学習・検証向け。
rmmod組み込まれているモジュールを取り外す。使用中(Used by が0以外)のものは外せない。
modprobe依存関係を自動解決してモジュールを組み込む/外す。/lib/modules 配下から名前で探す。実務の基本。
depmodモジュール間の依存関係一覧(modules.dep)を作成・更新する。modprobe はこの情報を使う。

カーネルログ

dmesgカーネルリングバッファの内容(起動ログ・機器認識・printk 出力など)を表示する。

クロスビルド

arm-linux-gnueabihf-gccArm(32bit hard-float)向けのクロスコンパイラ。オプションはネイティブgccと同じ。
./configureAutotoolsの構成スクリプト。--hostにターゲットのトリプレットを渡すとクロス用にMakefileを生成する。

コンテナ

docker runイメージからコンテナを起動する。-d でバックグラウンド、-p でポート公開、-v でボリューム、-it で対話実行。
docker ps稼働中のコンテナを一覧する。-a を付けると停止済みも表示する。
docker exec稼働中のコンテナ内でコマンドを実行する。-it でシェルを対話的に開ける。
docker logsコンテナが標準出力に書いたログを表示する。-f で追記を追従する。
docker stop稼働中のコンテナを停止する(正常終了を試みる)。
docker rm停止済みのコンテナを削除する。-f で稼働中でも強制削除する。
podmanDocker互換のコンテナ管理ツール。デーモン不要で rootless 実行に向く。サブコマンドは docker とほぼ同じ。

サーバ設定

hostnamectlサーバのホスト名を表示・変更する。

サービス管理

systemctlsystemd のユニット(service・timer など)を操作します。enable で自動起動を有効化、start で即時起動、status で状態確認を行います。time…

シェル

bashGNU Bash シェル。対話的に使うほか、スクリプトファイルを実行できる。
shPOSIX標準シェル。多くの環境で bash や dash への別名になっている。
echo引数の文字列や変数の値を標準出力へ表示する。
read標準入力から1行読み取り、変数に代入する。対話入力やループでの行処理に使う。
test / [条件式を評価し、真なら終了ステータス0、偽なら1を返す。if 文と組み合わせて使う。
export変数を環境変数にし、そのシェルから起動する子プロセスへ引き継げるようにする。
source / .別ファイルを現在のシェルの中で読み込み実行する。設定の再読み込みや関数・変数の取り込みに使う。
exitシェルやスクリプトを終了し、終了ステータス N(省略時は直前の値)を返す。
printf書式を指定して文字列を出力する。echo より整形の自由度が高く、移植性も高い。
true / falseそれぞれ常に成功(0)・失敗(1)の終了ステータスを返すだけのコマンド。無限ループや初期値に使う。
setシェルの動作オプションを変更する。スクリプト先頭で堅牢化のために使うことが多い。
shift位置パラメータを N 個(既定1)前へずらす。引数を順番に処理するループで使う。

システム

rebootラズパイを安全に再起動する。設定変更後に必要なことがある。
shutdownラズパイを安全に停止する。電源を抜く前に実行してSDカードの破損を防ぐ。

システム情報

unameカーネルやシステムの情報を表示する。-r で動作中カーネルのリリース番号を得る。

ストレージ

docker volume永続化に使うボリュームを作成・一覧・削除する。
dfマウントされている各ファイルシステムの容量・使用量・空き・使用率を一覧します。容量不足の調査でまず確認するコマンドです。
du指定したディレクトリやファイルが消費している容量を集計します。どこが容量を食っているかを掘り下げて調べるのに使います。
mountファイルシステムをディレクトリツリーに接続します。引数なしで実行すると現在のマウント状況を一覧します。fstab と組み合わせて mount -a で一括適用もできます。
umountマウント済みのファイルシステムを切り離します。書き込みバッファを確実に反映するため、デバイスを取り外す前に実行します。使用中だと外せないため、利用プロセスを終了してから行います。
mkfsパーティションにファイルシステムを作成(フォーマット)します。mkfs.ext4 のように種別ごとのコマンドがあります。対象上の既存データはすべて消えるため、デバイス名を必ず確認…
fdiskパーティションテーブルを表示・編集する対話型ツールです。-l を付ければ情報表示だけで済みます。編集操作はディスク構成を変えるため、対象デバイスをよく確認してから使ってください。
partedパーティションを操作するツールで、2TiBを超える大容量ディスク向けのGPTにも対応します。print で構成確認、mkpart で作成などを行います。編集はデータに影響するため…
blkidブロックデバイスのUUIDやファイルシステム種別を表示します。fstab を UUID で記述する際の値を調べるのに使う、安全な情報表示コマンドです。

テキスト加工

sed1行ずつ読み込んで置換や削除を行うストリームエディタ。
awk行を列に分けて処理する。列抽出・条件抽出・集計が得意。
tr文字単位で置換・削除・圧縮を行う。標準入力から読む。
cut各行から指定した列や文字位置を切り出す。
sort行を並べ替える。既定は辞書順、数値順や逆順も指定できる。
uniq隣り合う重複行をまとめる。先に sort するのが定番。
wc行数・単語数・バイト数を数える。

テキスト検索

grepパターンに一致する行を検索して表示する。正規表現が使える。
egrep拡張正規表現で検索する grep -E の別名(現在は grep -E が推奨)。

デバイスファイル

mknodメジャー・マイナー番号を指定してデバイスファイルを手動作成する。c=キャラクタ型、b=ブロック型。

デバイス確認

lsblkブロックデバイス(ディスクやパーティション)をツリー状に一覧する。内部では /sys の情報を読み取って表示を組み立てている。-f でファイルシステムやマウント先も確認できる。

デバッグ

gdbGNUデバッガ。実行を止めて変数や流れを調べる。-g付きビルドが前提。

ドキュメント

man 2 openセクション2(システムコール)のマニュアルを表示する。概要・引数・戻り値・errno 一覧を確認できる。
man 3 printfセクション3(ライブラリ関数)のマニュアルを表示する。libc の関数仕様を調べる。
man manマニュアルを表示する。セクション番号を付けると目的のページを正確に開ける。man man で番号の意味を確認できる。
aproposマニュアルの見出しをキーワードで横断検索する。目的のシステムコール名が分からないときに使う。
perror (C関数)直近の errno に対応するエラーメッセージを標準エラー出力へ表示するC関数。man 3 perror で詳細を確認できる。
errnoerrno の仕組みとエラー番号の一覧(ENOENT, EACCES など)を説明するマニュアル。失敗原因を調べる起点になる。

ナビゲーション

pwd現在いるディレクトリの絶対パスを表示する。
lsファイルやディレクトリの一覧を表示する。
cdカレントディレクトリを移動する。

ネットワーク

ip addrネットワークインターフェースとIPアドレスの割り当てを表示する。
ip routeルーティングテーブル(経路情報)を表示・操作する。
ping指定ホストへパケットを送り、到達性と応答時間を確認する。
ssソケットの状態(待ち受け・接続中のポート)を表示する。netstat の後継。
traceroute宛先までに経由するルータを順番に表示し、経路を調べる。
digDNSへ問い合わせ、名前解決の結果を詳しく表示する。
nslookupドメイン名からIPアドレスを手軽に引く名前解決ツール。
curlURLへアクセスし、Webサーバの応答を取得・確認する。
hostname自機のホスト名を表示する。-I で割り当てIPアドレスを表示。
nmcliNetworkManager をコマンドで操作し、接続や状態を確認・設定する。

ハードウェア確認

lspciPCIバスに接続された機器を一覧する。-k で各機器を扱っているカーネルドライバ名も表示する。
lsusbUSBバスに接続された機器を一覧する。挿抜の確認や認識確認に使う。

パッケージ

aptDebian/Ubuntu系のパッケージ管理。
dnfRHEL/MiracleLinux系のパッケージ管理。
apt updateインストール可能なパッケージの一覧(台帳)を最新化する。実際の更新はまだ行わない。
apt full-upgradeインストール済みパッケージを更新する。依存関係の都合で必要なら不要パッケージの入れ替えも行う。ラズパイで推奨。

ビルド

gccGNU Cコンパイラ。Cソースを実行ファイルに変換する。
./a.outgccで出力名を指定しなかった場合の既定の実行ファイル名。カレントのパスを付けて実行する。
makeMakefileに書かれた手順に従い、更新があった部分だけを再ビルドする。
ar複数のオブジェクトファイルをまとめて静的ライブラリ(.a)を作る。

ビルド設定

make menuconfigKconfigベースのテキストUIで設定を編集するMakeターゲット。BuildrootやLinuxカーネルのソースルートで実行し、アーキテクチャ・カーネル・パッケージなどを画面…
make (Buildroot)Buildrootのソースルートで引数なしに実行すると、現在の .config に従ってクロスツールチェーンの構築からカーネル・ルートファイルシステムの生成までフルビルドを行う。…
make <board>_defconfigBuildrootで、configs/ に用意されたボード向け既定設定を読み込んで .config を生成するMakeターゲット。対応ボードの一覧は make list-defc…
bitbakeYoctoのビルドエンジン。指定したターゲットのレシピを解析し、依存関係を解いてタスクを実行する。ターゲットには core-image-minimal などのイメージレシピや、b…
source oe-init-build-envYoctoのビルドに必要な環境変数を現在のシェルに設定し、buildディレクトリへ移動する初期化スクリプト。pokyのトップで読み込む。変数を呼び出し元シェルへ反映させる必要があ…

ファイアウォール

firewall-cmdfirewalld を操作するコマンド。サービスやポートの許可・拒否、設定の確認・反映を行う。--permanent を付けた変更は保存され、--reload で現在の動作に反映…
ufwUncomplicated Firewall の略で、Ubuntu系で使われる簡易ファイアウォール管理ツール。firewalld の代わりに、より少ないコマンドで許可・拒否を設定…

ファイル操作

mkdir新しいディレクトリを作成する。
touch空ファイルを作成する(既存なら更新日時を変更)。
cpファイルやディレクトリを複製する。
mv移動、または名前を変更する。
rmファイルやディレクトリを削除する。確認なしで消える点に注意。

ブランチ

git branchブランチの一覧表示や新規作成を行う。
git switch作業対象のブランチを切り替える(新しめの書き方)。
git checkoutブランチ切り替えなどに使う従来からのコマンド。switch / restore に役割が分かれた。
git merge指定したブランチの変更を、いまのブランチに統合する。

ブート設定

grub2-mkconfigGRUBの設定ファイル grub.cfg を、/etc/default/grub などの設定から再生成する。grub.cfg は手で直接編集せず、このコマンドで作り直すのが基本。…

プロセス

ps実行中のプロセスを一覧表示する。
topCPU・メモリ使用状況をリアルタイムに表示する。q で終了。
kill指定PIDのプロセスにシグナルを送り終了させる。

リポジトリ

git initカレント(または指定)ディレクトリを新しいGitリポジトリとして初期化する。
git clone既存のリポジトリを履歴ごと手元に複製する。複製元は origin として自動登録される。

リモート

git remoteリモートリポジトリの一覧表示や登録を行う。
git push手元のコミットをリモートへ送り出す。
git pullリモートの変更を取得し、いまのブランチに取り込む。
ssh別のPCからラズパイへ暗号化された文字ベースの遠隔接続を行う。

ログ閲覧

journalctlsystemd のジャーナル(統合ログ)を閲覧する。-b で今回の起動以降のログ、-u で特定サービスのログ、-k でカーネルメッセージだけに絞れる。起動やサービス障害の調査に使…

単発予約

at指定した時刻にコマンドを一度だけ実行するよう予約します。実行すると専用プロンプトが開き、入力したコマンドが予約されます。終了は Ctrl-D です。「now + 2 hours」…
atqat で予約済みのジョブの一覧を表示します。各行に予約番号・実行予定時刻・キューが並びます。取り消したい場合は、ここで確認した番号を atrm に渡します。

取り消し

git restore作業ツリーの変更を元に戻したり、ステージから変更を下ろしたりする。
git resetブランチの先頭を別のコミットに戻す。--hard は変更も破棄するため慎重に扱う。

定期実行

crontabユーザごとの cron 予定表を編集・表示・削除します。-e で編集、-l で一覧表示、-r で全削除です。1行が1つの定期ジョブで、先頭5フィールドに実行タイミング、続けて実行…
systemctl list-timerssystemd の timer ユニットの一覧と、それぞれの次回起動予定・前回起動時刻を表示します。--all を付けると無効なものも含めて表示します。定期実行が正しく仕込まれて…
systemd-runコマンドを一時的なユニットとして即座に、または指定した遅延後に実行します。--on-active=30min で30分後に一度だけ実行、--on-calendar で cron …

実行

./a.outカレントディレクトリにある実行ファイルを起動する。PATHに含まれない場所の実行ファイルは ./ を付けて指定する。

構成管理

ansibleAnsible の ad-hoc コマンドで、1回限りの操作を対象ホスト群へ SSH 経由で実行します。-m でモジュール、-a でその引数を指定します。playbook を書く…
ansible-playbookYAML で書いた playbook を読み込み、記述した手順を対象ホストへ順に適用します。各タスクは冪等に設計されているため、同じ playbook を何度実行しても安全です。…

権限

chmodファイルのパーミッションを変更する。
chownファイルの所有者・グループを変更する。
sudo許可された一般ユーザが、コマンドを管理者(root)などの権限で実行するためのコマンド。root に直接ログインせず、必要なときだけ権限を借りられる。実行可否は /etc/sud…
visudo/etc/sudoers を安全に編集するための専用コマンド。保存時に文法チェックを行い、誤りがあれば警告して破損を防ぐ。直接エディタで sudoers を開くより安全。

状態確認

vcgencmdラズパイ固有のコマンドで、CPU温度や電源状態などを取得する。

疑似FS閲覧

cat /proc/*cat で /proc 以下の疑似ファイルを読み、カーネルが保持するシステム情報を観察する。専用ツールがなくてもCPU・メモリ・カーネルの状態を確認できる。
cat /sys/*cat で /sys 以下の属性ファイルを読み、カーネルが認識しているデバイスやドライバの状態を確認する。ハードウェアとカーネルオブジェクトの関係を直接覗ける。

監視

uptime稼働時間とロードアベレージ(1/5/15分)を1行で表示する。
htoptopの高機能版。色付きでCPU/メモリを可視化し、並べ替えや操作がしやすい。
freeメモリとスワップの使用量・空き容量を表示する。
vmstatCPU待ち・I/O待ち・スワップなどを時系列で表示する。
iostatデバイスごとのディスクI/O負荷を表示する(sysstat)。

確認

ls (生成物確認)ビルド成果物の出力先を一覧して、生成されたイメージやアーカイブのサイズを確かめる。Buildrootは output/images/、Yoctoは tmp/deploy/imag…
tar (rootfs確認)ルートファイルシステムのtarアーカイブを展開せずに中身だけ一覧して、目的のコマンドやライブラリが含まれているかを確認する。t が一覧、f がファイル指定。圧縮形式でも近年のta…
fileファイルの種別を内容から判定して表示する。生成したカーネルイメージやrootfsイメージが、想定どおりの形式・アーキテクチャかを書き込み前に照合するのに使う。拡張子ではなく中身を…
git status変更・ステージの状況や現在のブランチを表示する。作業中に最もよく使う。
git logコミット履歴を新しい順に表示する。

補助

date現在の日付と時刻を表示します。cron 式を組むときの曜日番号や時刻の確認、スクリプト内でログにタイムスタンプを付ける用途に使います。+%w で曜日番号(0=日曜)を取得できます。
chmod +xファイルに実行権を付与します。シェルスクリプトを cron や timer から直接呼び出すには、まず実行権が必要です。先頭にシバン(#!/bin/bash)を書いたうえで実行権…

観察

straceコマンドが呼び出すシステムコールと、その引数・戻り値・errno を順に表示する。低レイヤの挙動調査や障害解析に使う。
ltraceプログラムが呼ぶライブラリ関数(libc の printf など)を表示する。strace と対にして層の違いを確認できる。

解析

ldd実行ファイルが依存する共有ライブラリと解決先を一覧する。
nmオブジェクトファイルや実行ファイルのシンボル(関数・変数)を一覧する。
readelfELFファイルのヘッダやセクション情報を表示する。アーキ確認に使う。
objdumpオブジェクト/実行ファイルを逆アセンブルしたり、ヘッダ情報を表示する。

記録

git add変更をステージング(インデックス)に載せ、コミット対象に含める。
git commitステージ上の変更を、メッセージ付きで1つの履歴として確定する。

設定

raspi-configラズパイの初期設定をメニュー形式で行う公式ツール。ローカライズやインターフェース有効化、ホスト名変更などをまとめて設定できる。

調査

lsof開いているファイルやソケットと、それを開いているプロセスを一覧する。

起動分析

systemd-analyzeシステムの起動にかかった時間を分析する。引数なしで段階ごとの要約、blame で遅いサービスを降順に、critical-chain で起動完了までの依存の連鎖を表示する。

閲覧

catファイルの内容を連結して表示する。
less長いファイルをスクロールしながら閲覧する。q で終了。
headファイルの先頭部分を表示する(既定10行)。
tailファイルの末尾部分を表示する。-f で追記を追従。

▶ 学習アプリで体系的に学ぶ