Linux の基礎知識

【Linuxの基礎知識】初心者向け!Linux管理に役立つ基本コマンド完全ガイド

ITエンジニア基礎スキル

🟢 Linux の基礎知識
📌 サーバー運用の基盤となるOSの仕組みを理解する
├─【Linuxの基礎知識】Linuxとは?基本概要と仕組みをわかりやすく解説!
├─【Linuxの基礎知識】インストールからログインまでの完全マニュアル
├─【Linuxの基礎知識】カーネルの役割と起動プロセスをわかりやすく解説!
├─【Linuxの基礎知識】ファイルシステムを極める!ディレクトリ構造とその関連性を解説
├─【Linuxの基礎知識】ディレクトリとファイル操作を完全マスター!初心者向けガイド
├─【Linuxの基礎知識】初心者向け!Linux管理に役立つ基本コマンド完全ガイド
├─【Linuxの基礎知識】ユーザー管理を極める!アクセス権との連携で強固なシステム構築
├─【Linuxの基礎知識】リンクとiノードについて理解を深めよう!
├─【Linuxの基礎知識】LVMとは? LVMを理解しよう!
├─【Linuxの基礎知識】再起動時に入れ替わるデバイス名「sdX」を固定したい
├─【Linuxの基礎知識】過去事例から学ぶ!システムセキュリティの基本
├─【Linuxの基礎知識】ディスク管理の完全ガイド!初心者から実践までを徹底解説
├─【Linuxの基礎知識】ネットワーク設定とトラブルシューティングを徹底解説!
├─【Linuxの基礎知識】リソース監視ツールの使い方を徹底解説!
├─【Linuxの基礎知識】パッケージ管理の応用テクニックをマスター!
├─【Linuxの基礎知識】仮想化とコンテナの基本を学ぶ!仕組みと違いを解説!
├─【Linuxの基礎知識】バックアップとリストア!スナップショット活用も紹介!
└─RAIDとディスク管理を徹底解説!

日常的な管理を支えるLinuxのコマンド操作ガイド

Linuxシステムを効率的に運用するためには、基本的なコマンドの習得が不可欠です。日々のファイル管理からユーザー設定、システム監視に至るまで、管理者として押さえておくべきコマンドは多岐にわたります。本記事では、日常的な運用で役立つLinuxの基本コマンドをわかりやすく解説します。

ユーザーを切り替えるコマンド「su」

普段、Windows環境でPCを使っている方にとっては「ユーザー」の切り替えというのはそれほど重要な意味を持っているものとは考えないかもしれません。そのような場合には基本的に「誰がそのPCを使っているか」という違いでしかないためです。

しかしながら本来、PCの「ユーザー」という概念は、組織内、あるいは家庭内などの複数の人間が使用する環境において、「誰にどこまでの権限を与えるのか」という意図が含まれていることを考えなければなりません。

suコマンドとは?

「su」は、ログインし直さずに他のユーザーに切り替える(substitute user)コマンドです。

通常、設定変更時に「ログインユーザー」から「スーパーユーザー(rootユーザー)」へスイッチを行い、スーパーユーザー権限で、さまざまなコマンドを実行したい場合に使用します。

コマンドの書式

suオプション] ユーザー]

「su」コマンドを使うと、一時的にそのPCのあらゆる機能・設定を管理するための権限である「rootユーザー」へ昇格します。

Linuxでは、ユーザーは必要に応じてこの「su」コマンドを使用して「rootユーザー」へ昇格し、必要な操作を終えたらまた一般ユーザーへ戻ることで、リスクの低減、適切なPC環境のハンドリングを行うことができるのです。「exit」コマンドで元のユーザーに戻ります。

スーパーユーザー(rootユーザー)」とは、UNIX系のOSにおいて、最高権限を持つ特殊なユーザーアカウントを指す。Windows系OSでいうところの「アドミニストレーター」に該当します。「スーパーユーザー」権限は、Unix系OSにおけるすべての権限を持ちます。その気になれば、システムそのものを破壊できます。

コマンドの主なオプション

  • -c(--command):対話シェルは起動せずにコマンドを実行する
  • -l(--login):シェルを「ログインシェル」にする
  • -s(--shell):実行するシェルを指定する

例)スーパーユーザー(root)へスイッチ後、「exit」コマンドで元のユーザへ戻る。

「su」と「su -」の違いは?

「su」ではカレントディレクトリも環境変数も元のユーザーのものが引き継がれますが、「su -」ではカレントディレクトリや環境変数は変更したユーザーの初期値に設定されます。

「su」を使ってユーザー変更

su」コマンドにて「root」へスイッチ後、カレントディレクトリを確認します。

$ su

「su」によるユーザー変更の場合は、変更前のユーザー「infusr」の情報を引き継ぎます。

「su -」を使ってユーザー変更

su -」コマンドにて「root」へスイッチ後、カレントディレクトリを確認します。

$ su -

「su -」によるユーザー変更の場合は、変更前のユーザー「infusr」の情報を引き継がずに初期値で設定されます。

「su」でのユーザー変更では、変更前ユーザーの環境変数を引き継いでしまいます。
思わぬトラブルを避けるためにも、通常は「su -」でユーザー変更を行いましょう。

ログインユーザーを表示する「who」

「who」は、システムにだれがログインしているかを確認するコマンドです。

例えば、OSの設定変更を反映させるために、サーバーの再起動を行う必要があります。ですが、誰がログイン中なのかが分からないと、迂闊にサーバーの再起動が出来きません。

「who」コマンドは、現在ログイン中のユーザーを確認することが出来るコマンドです。

コマンドの書式

who[オプション]

コマンドの主なオプション

  • -a(--all):全ての情報を表示する。
  • -b(--boot):現在ログインしているシステムが起動した時刻を表示する
  • -d(--dead):終了したプロセスを表示する
  • -H(--heading):ヘッダ行を表示する
  • -l(--login):システムのログインプロセスを表示する
  • -m:標準入力に関連付けられたホスト名とユーザーのみを表示する
  • -q(--coun):ログイン中のユーザーのログイン名とユーザー数を表示する
  • -r(--runlevel):現在のランレベルを表示する
  • -s(--short):名前と端末、ログインした時刻のみを表示する
  • -u(--users):ログイン以降のアイドルタイム(IDLE列)を表示する

標準入力に関連付けられたホスト名とユーザーのみを表示します。

# who -m

よく似たコマンド「whoami」

「who」とよく似たコマンドで、自分のユーザー名を表示するコマンド「whoami」があります。現在操作中のユーザー名が知りたいだけなら「whoami」を使う方が、対象が自分に限定される分、分かりやすいと思います。

コマンドのフルパスを表示する「which」

「which」は、環境変数PATHから順番にディレクトリを調べて、見つけたコマンドファイルを表示するコマンドです。

例えば、dumpモジュールをインストールしたのはいいが、何処へインストールされたのか分からない場合等、対象のロケーション(格納場所)を取得可能です。

コマンドの書式

which[オプション] コマンド名

コマンドの主なオプション

  • -a(--all):環境変数PATHにある全ての実行ファイルを表示する
  • -i(--read-alias):標準入力からエイリアスを読み込み、合致したものを表示する

「dump」実行ファイルのパスを表示します。

$ which dump

ココに注意

「which」コマンドは、環境変数PATHに登録されているディレクトリにある実行可能ファイルを検索の対象とします。検索はPATHに登録していない実行ファイル(独自に作成したシェルスクリプトなど)は対象外となるので注意してください!

ファイルシステムを増設する「mount」

「mount」は、HDDやUSBメモリ、DVD-ROMなどのフォーマット済みの領域(ファイルシステム)を指定したディレクトリ(マウントポイント)と一時的に結び付けてアクセスできるようにするコマンドです

コマンドの書式

mount[オプション] デバイス [マウントポイント]

コマンドの主なオプション

  • -a(--all):/etc/fstabに記載がある全てのデバイスをマウントする
  • -T(--fstab):/etc/fstabの代わりに使用するファイルを指定する
  • -t (--types):マウントするファイルシステムの種類を指定する
  • -L ラベル:指定したラベルを持つパーティションをマウントする
  • -o(--options):マウントオプション
  • -r(--read-only):読み込み専用でマウントする
  • -w(--rw、--read-write):読み書き可能な状態でマウントする
  • -f(--fake):実際にはマウントしない(実行内容を確認用のフェイクマウント)
  • -v(--verbose):動作時のメッセージを詳しく表示する
  • -l(--show-labels):マウント済みのデバイスをラベル付きで一覧表示

CentOS7のisoメディアを「/media」へマウントします。

# mount -o loop -t iso9660 CentOS-7-x86_64.iso /media

「mount」コマンドは、「スーパーユーザー(rootユーザー)」権限で実行します。

一般ユーザーにマウント権限を与える場合の書式

例)一般ユーザでCD-ROMのマウントを行う
一般ユーザでCD-ROM を取り扱えるようにするには「/etc/fstab」で設定する必要があります。

[ /etc/fstab ]

/dev/cdrom /media iso9660 user,noauto,ro 0 0

「/etc/fstab」にマウントの設定を書いておくことで、デバイスのみの指定、あるいはマウントポイントのみの指定「mount /dev/cdrom」でマウントできるようになります。
 上記の例では、CD-ROM はリードオンリーで「mount」されます。

ファイルシステムのマウントを解除する「umount」

「umount」は、ファイルシステムのマウントを解除(アンマウント)するコマンドです。

コマンドの書式

umount[オプション][マウントポイント]

コマンドの主なオプション

  • -a(--all):マウントの状況を記録するファイル
  • -A(--all-targets):ネームスペースでマウントされたデバイスをアンマウントする
  • -l(--lazy):対象のファイルシステムがbusyでなくなった時点でアンマウントする
  • -R(--recursive):再帰的にアンマウントする
  • -r(--read-only):アンマウントに失敗した場合、読み出し専用で再マウントする
  • -f(--force):強制的にアンマウントする
  • -v(--verbose):動作時のメッセージを詳しく表示する

CentOS7のisoメディアを「/media」からアンマウントします。

# umount /media

「umount」コマンドは、「スーパーユーザー(rootユーザー)」権限で実行します。

ディスク容量を確認する「df」

dfコマンドは、ファイルシステムのディスク容量を表示するコマンドです。

コマンドの書式

df[オプション][ファイル]

コマンドの主なオプション

  • -h(--human-readable):サイズに応じて読みやすい単位で表示する
  • -B(--block-size=サイズ):指定したブロックサイズで表示する
  • -k(--kilobytes):キロバイトブロック単位でサイズを表示する
  • -m(--megabytes):メガバイトブロック単位でサイズを表示する
  • -P(--portability):POSIX出力形式(サイズではなくブロックで表示)
  • -i(--inodes):ブロック使用量の代わりにiノード情報を表示する
  • -T(--print-type):各ファイルシステムの種類を合わせて表示する
  • -t(--type=種類):対象とするフォーマットの種類を指定する
  • -x(--exclude-type=種類):対象としないフォーマットの種類を指定する
  • -a(--all):ダミーファイルシステムを含めて表示する

ファイルシステムのディスク容量を表示します。

$ df -h

ソフトウェアの管理「dnf」

Red Hat系のディストリビューションで使われている「RPMパッケージ」を扱うためのパッケージ管理コマンドです。 dnfを使用することによって、LinuxでもWindowsと同様に簡単に必要なソフトウェアをインストールして使用することができるようになります。

Windowsであれば、ダブルクリックするだけで「インストーラー」が走りインストールが開始される、というのが一般的ですが、Linuxの場合、特にサーバーで用いられるRed Hat系のOSにおいては、GUI環境が用意されていないケースもあり、コマンドによるソフトウェア管理を行う知識もあると業務においても役立つでしょう。

yumからdnfへの移行の経緯
dnf(Dandified Yum)は、従来のyumに代わる次世代のパッケージマネージャーとして、2015年に登場しました。最初に採用されたのはFedora 22で、Red Hat Enterprise Linux(RHEL)8以降では公式にyumの後継として標準化されています。dnfは、yumの欠点を解消するために設計されており、高速なメタデータ処理や依存関係の解決精度の向上など、多くの改善が加えられています。また、dnfはPython 3ベースで構築されており、最新の技術基盤に対応しています。一方、yumは従来の環境でも使い続けられるように提供されていますが、近年では非推奨となり、ほとんどのLinuxディストリビューションでdnfへの移行が推奨されています。

現在ではyum は非推奨となり、最新のLinuxディストリビューションでは dnf が標準になっています。
yum の基本的な機能は dnf に引き継がれており、コマンドの操作方法もほぼ同じです。
最新のLinuxディストリビューション(RHEL 8以降、Fedoraなど)では、yum は非推奨となり、dnf がデフォルトになっています。

dnfコマンドとは?

ソフトウェアをインストールする際や、削除する際にはこれらのコマンドに対して、既定の追記を行います。

たとえば、インストールであれば「dnf install」、削除であれば「dnf remove」といった具合です。どのコマンドを使用するかについては、使用しているディストリビューションによって異なります。ここではRedHat系OSの「CentOS」を例に説明をします。

コマンドの書式

dnfオプション] コマンドパッケージ名]

dnfコマンドには、オプションを追記することができます。オプションとは、インストールに際して、あわせて「○○も行ってほしい」削除の際に「○○もしてほしい」という内容です。

たとえば、「●●」というソフトウェアを削除したいというときに「設定ファイルなども含めて完全に削除したい」という場合、コマンドでは「dnf remove ●●」とような書き方をします。

その他、dnfでインストール可能なパッケージグループの一覧を表示する場合には「dnf list 」と言うような具合です。

DNFの主なコマンド

  • install:指定したパッケージをインストールする
  • remove:指定したパッケージを削除する
  • update(エイリアス: upgrade):システム内のインストール済みパッケージを更新する
  • search:指定した文字列を含むパッケージを検索する
  • info:指定したパッケージの詳細情報を表示する
  • list:パッケージの一覧を表示する(例: インストール済みパッケージや利用可能なパッケージ)
  • group install:特定のパッケージグループをインストールする
  • group remove:特定のパッケージグループを削除する
  • autoremove:不要になった依存パッケージを自動的に削除する
  • clean:メタデータキャッシュや不要なファイルを削除する
  • check-update:更新可能なパッケージを確認する(インストールは行わない)
  • history:以前の操作履歴を確認する

また、行いたい動作に合わせてオプションを付記することで、手作業による処理が少なくなり、効率的にLinux・PCの操作を行うことができます。

特に下記に挙げるオプション「-y」などは、シェルスクリプトを作成する上で、自動化を測りたい場合に多用されます。

DNFの一般的なオプション

  • -y (--assumeyes):すべてのプロンプトに自動で「yes」と回答する
  • -q (--quiet):コマンドの出力を最小限に抑える
  • -v (--verbose):詳細な出力を表示する
  • --version: dnf のバージョン情報を表示する
  • --help:コマンドの使い方を表示する

例)httpdサービスの導入有無を確認します。

# dnf info httpd

「dnf」コマンドは、一部を除いて「スーパーユーザー」権限で実行します。

httpdモジュールの導入状況が確認できます。

システムを終了する「shutdown」

「shutdown」コマンドは、システムを終了するためのコマンドです。オプションを組み合わせることで「終了」「再起動」等のタイミングを指定することが可能です。

たとえば、サーバー構築中にどうしても再起動したい場合等、他に接続中のユーザがいるか分からない場合、「shutdown -k」と入力する(ちょっと強引な気もしますが・・)と、大抵の場合、サーバーへ接続中のユーザーやその周辺がざわつきます。

そこで、改めて再起動の告知を行い、安全に再起動を行うことが可能です。

コマンドの書式

shutdown[オプション][時刻]

コマンドの主なオプション

  • -h(--halt):システムを終了して電源を切る(デフォルト)
  • -r(--reboot):システムを終了して再起動する
  • -k:システムを終了せず、ログイン中の端末にメッセージだけを送る

システムを終了せず、ログイン中の端末にメッセージだけを送ります。

# shutdown -k

「shutdown」コマンドは「スーパーユーザー(rootユーザー)」権限で実行します。

[Ctr」+「c」でプロンプトへ戻ります。

=> さらにコマンドについて知りたい方は、下記の記事を参照してください。

コマンド操作で直面しやすいエラーと解決法

Linuxを運用する中で、コマンド操作時にエラーが発生することは避けられません。しかし、エラーの原因を正しく理解し、適切に対応することで迅速に問題を解決できます。このセクションでは、頻繁に発生するエラーとその解決方法を解説します。

権限エラーの対処法

Linuxの操作中に最も頻繁に遭遇する問題の一つが権限に関するエラーです。特に「Permission Denied」というメッセージは、ファイルやディレクトリに対するアクセスが拒否されたことを示します。これは適切な権限が不足している場合や、ファイルシステムの設定に問題がある場合に発生します。このセクションでは、権限エラーの原因を特定し、適切に対処する方法を解説します。

"Permission Denied" の原因と対策

"Permission Denied"というエラーメッセージは、ファイルやディレクトリに対するアクセス権が不足している場合に表示されます。

原因:

  • ユーザーがファイルまたはディレクトリに対する適切な権限を持っていない。
  • ファイルシステムがマウント時に読み取り専用として設定されている。

対策:

  • 必要な権限を付与する:

chmod u+rwx filename

  • ファイルの所有者を変更する:

chown username:groupname filename

  • ファイルシステムが読み取り専用の場合、再マウントを試みます:

mount -o remount,rw /mount/point

コマンドが見つからないエラー

Linuxでコマンドを実行しようとした際に「Command not found」というエラーメッセージが表示されることがあります。このエラーは、指定したコマンドがシステムに存在しない、または正しいパスが設定されていない場合に発生します。このセクションでは、エラーの原因を特定し、必要なコマンドをインストールしたり、環境変数を適切に設定する方法を解説します。

"Command not found" の原因と修正方法

"Command not found"は、入力されたコマンドがシステム上で見つからない場合に表示されます。

原因:

  • コマンドがインストールされていない。
  • コマンドのパスが環境変数 PATHに含まれていない。

対策:

必要なパッケージをインストールする:

dnf install package-name

または:

apt-get install package-name

コマンドの場所を確認し、PATHに追加する:

which command-name
export PATH=$PATH:/path/to/command

ディスク関連エラーの解決法

Linuxシステムの運用では、ディスク容量不足やマウント失敗といったディスク関連のエラーが発生することがあります。これらの問題を迅速に特定し解決することは、システムの正常な動作を維持する上で非常に重要です。このセクションでは、ディスク容量不足の検出方法やマウント失敗時の対処法について、実践的な手順を解説します。

ディスク容量不足の検出と対策(df/du の活用)

ディスク容量が不足すると、新しいファイルの作成や既存ファイルの更新ができなくなることがあります。

検出方法:

ディスク全体の使用状況を確認:

df -h

特定ディレクトリの使用量を確認:

du -sh /path/to/directory

対策:

不要なファイルを削除:

rm -rf /path/to/unnecessary/files

ログファイルのクリア:

> /var/log/large-log-file.log

マウント失敗時のトラブルシューティング(mount の応用)

マウント操作が失敗する場合、ファイルシステムやデバイスの状態が原因となっている可能性があります。

原因:

  • デバイスが正しく接続されていない。
  • ファイルシステムの種類が不明または異なる。
  • マウントポイントが存在しない。

対策:

デバイスの状態を確認:

lsblk

ファイルシステムの種類を指定してマウント:

mount -t ext4 /dev/sdX1 /mnt/point

マウントポイントを作成:

mkdir -p /mnt/point
mount /dev/sdX1 /mnt/point

これらのエラー処理を学ぶことで、Linuxシステム管理のトラブルシューティングスキルが大幅に向上します。

最新のツールとベストプラクティス

Linuxの運用では、常に進化するツールや手法に対応することが求められます。従来のコマンドに代わる新しいツールや、より効率的な運用方法を採用することで、システム管理の効率を向上させることが可能です。このセクションでは、DNFによるパッケージ管理やsystemctlを用いたシステム管理について解説します。

DNFによるソフトウェア管理

Linuxシステムでのソフトウェア管理は、運用やメンテナンスにおいて重要な作業の一つです。従来のyumに代わり、次世代パッケージマネージャーとして登場したdnfは、依存関係の解決精度や操作速度の向上など、数多くの改善が施されています。このセクションでは、yumからdnfへの移行方法と、dnfを使用した基本的なソフトウェア管理の手順を解説します。

yumからdnfへの移行方法

DNF(Dandified Yum)は、従来のyumに代わる次世代のパッケージマネージャーとして設計されています。以下の理由から、yumからdnfへの移行が推奨されています。

yumからdnfへ変わった理由

  • 高速化:
    メタデータ処理が効率化され、パッケージの検索やインストールが高速化。
  • 依存関係の解決精度:
    依存関係の処理アルゴリズムが改良され、より信頼性の高いパッケージ管理を実現。
  • 新機能の追加:
    高度なオプションやプラグインのサポートが向上。

yumの基本コマンドは、dnfにほぼそのまま置き換えることが可能です。

yum install package-name → dnf install package-name
yum update → dnf upgrade
yum remove package-name → dnf remove package-name

パッケージ管理の基本操作(インストール、更新、削除)

DNFを使用したパッケージ管理の基本的な操作を以下に示します。

  • インストール:

    dnf install package-name

  • 更新:

    dnf upgrade

  • 削除:

    dnf remove package-name

systemctlを用いたシステム管理

Linuxシステムの管理において、systemctl は重要な役割を果たします。従来のshutdownやserviceといったコマンドを統合し、システムの再起動や電源オフ、さらにはサービスやユニットの管理まで一括して行える強力なツールです。このセクションでは、systemctlを使った基本的なシステム管理方法を解説し、効率的な運用をサポートします。

shutdownコマンドとの違い

従来のshutdownコマンドは、システムの終了や再起動を行うための標準的なツールでした。一方、現在のLinuxシステムでは、 systemctlが主流となり、shutdownコマンドはその内部でsystemctlを呼び出す形に置き換えられています。

shutdown -h now → systemctl poweroff
shutdown -r now → systemctl reboot

systemctlとの主な違い

  • systemctlは、システム全体のユニット管理(サービス、ソケット、ターゲット)もカバーするため、より広範囲な操作が可能です。
  • 互換性が保たれているため、従来のshutdownコマンドからsystemctlに移行しても操作感に大きな違いはありません。

再起動や電源オフの実行方法

systemctlを使用すると、システムの再起動や電源オフが簡単に行えます。

  • システムを再起動する:

    systemctl reboot

  • システムの電源をオフにする:

    systemctl poweroff

  • 指定した時間にシャットダウンする:
    • 絶対時間で指定する場合:

      systemctl shutdown 22:00

    • 相対時間で指定する場合:

      systemctl shutdown +30

時間指定を使うことで、計画的なシャットダウンが可能になり、メンテナンスやシステム管理が効率化します。


この記事を読んだら、次は 「【Linuxの基礎知識】ユーザー管理を極める!アクセス権との連携で強固なシステム構築」 を読むのがおすすめです!

よく読まれている記事

1

IT入門シリーズ 🟢 STEP 1: ITの基礎を知る(ITとは何か?) 📌 IT初心者が最初に学ぶべき基本知識。ITの概念、ネットワーク、OS、クラウドの仕組みを学ぶ ...

2

「私たちが日々利用しているスマートフォンやインターネット、そしてスーパーコンピュータやクラウドサービス――これらの多くがLinuxの力で動いていることをご存じですか?無料で使えるだけでなく、高い柔軟性 ...

3

この記事は、Linuxについて勉強している初心者の方向けに「Shellスクリプト」について解説します。最後まで読んで頂けましたら、Shellスクリプトはどのような役割を担っているのか?を理解出来るよう ...

-Linux の基礎知識