Linuxの基本コマンド
ファイルとディレクトリの操作(ls、cd、cp、mv、rmなど)
- pwd - 現在の作業ディレクトリのパスを表示する。
- オプション 不要
- ls -atl
- -a 隠しファイルも表示
- -t 更新日時の新しいものから表示
- -r 更新日時の古いものから表示
- -l 詳細なリスト表示
- -h 人間に読みやすいサイズ表示
- -1 ファイル名だけ表示
- cd(ディレクトリの変更)
- cd ディレクトリ名:指定したディレクトリに移動
- cd .. 1つ上のディレクトリに移動
- cd ../.. 2つ上のディレクトリに移動
- cd ~ ホームディレクトリに移動
- cp(ファイルおよびディレクトリのコピー):
- -r ディレクトリを再帰的にコピー
- -i 上書きの確認を行う
- mv(ファイルおよびディレクトリの移動/リネーム):
- -i 上書きの確認を行う
- rm(ファイルおよびディレクトリの削除):
- -r ディレクトリを再帰的に削除
- -i 確認を行う
- -f 確認なしで強制削除
- mkdir - 新しいディレクトリを作成する。
- -p 親ディレクトリも必要であれば自動的に作成。
- rmdir - 空のディレクトリを削除する。
- よく使うオプション なし
ファイル内容の表示と編集(cat、grep、sed、viなど)
- cat:
- catはファイルの内容を表示するためのコマンドです。
- よく使うオプション:
- -n 行番号を表示
- -A 制御文字を表示
- grep:
- grepはテキストファイル内でパターンを検索するためのコマンドです。
- よく使うオプション:
- -i 大文字小文字を無視
- -r ディレクトリ内のファイルを再帰的に検索
- sed:
- sedはテキストのストリーム編集ツールです。
- よく使うオプション:
- -e スクリプトを指定して編集操作を実行
- -i ファイルを直接編集
- vi:
- viはテキストエディタで、ファイルを表示および編集できます。
- よく使うコマンド (コマンドモード):
- i 挿入モードに切り替え
- :w 保存
- :q 終了
- :wqまたは:x 保存して終了
ユーザーとグループの管理(useradd、passwd、groupaddなど)
- useradd 新しいユーザーを作成するコマンドです。
- -m ユーザーのホームディレクトリを作成します。
- -g 初期のプライマリグループを指定します。
- -G 追加の補助グループを指定します。
- passwd ユーザーパスワードを変更するコマンドです。
- パスワードの変更はオプションなしでコマンドを実行し、対話的に行います。
- usermod 既存のユーザーの属性を変更するコマンドです。
- -aG ユーザーを補助グループに追加します。
- userdel ユーザーを削除するコマンドです。
- -r ユーザーのホームディレクトリとメールボックスを削除します。
- groupadd 新しいグループを作成するコマンドです。
- groupmod 既存のグループの属性を変更するコマンドです。
- groupdel グループを削除するコマンド
プロセスの管理(ps、top、killなど)
- s コマンド:
- ps 現在のユーザーのプロセス一覧を表示。
- ps aux すべてのプロセスを詳細に表示。
- ps -e システム全体のプロセスを表示。
- top コマンド: - top インタラクティブなプロセスモニタリングツール。リアルタイムでシステムリソース使用状況を表示。 - top -p PID 特定のプロセスID(PID)の情報を表示。
- kill コマンド: - kill PID 指定したプロセスを終了。 - kill -9 PID 強制的にプロセスを終了。
- pkill コマンド: - pkill process_name プロセス名に基づいてプロセスを終了。 - pkill -f pattern コマンドライン引数に基づいてプロセスを終了。
- killall コマンド: - killall process_name プロセス名に一致するすべてのプロセスを終了
ファイルシステムとディスク管理:
- df - ディスク使用状況を表示する。
- よく使うオプション:
- -h サイズを人間が読みやすい形式で表示。
- du - ディレクトリのディスク使用量を表示する。 - よく使うオプション: - -h サイズを人間が読みやすい形式で表示。 - -s 合計のみ表示。
パーティションの管理と作成
- fdisk ディスクのパーティショニングを管理するコマンド。
- fdisk -l # パーティションの一覧を表示
- fdisk /dev/sda # /dev/sdX ディスクのパーティショニングを管理(Xはディスクのラベル、例:/dev/sda)。
- n 新しいパーティションを作成します。
- parted パーティションの管理と調整を行うユーティリティ。
- mklabel 新しいパーティションテーブルを作成します。
- mkpart 新しいパーティションを作成します。
- 例:
- parted /dev/sda mklabel gpt # GPTパーティションテーブルを作成
- parted /dev/sda mkpart primary ext4 0% 100% # ext4 パーティションを作成
- mkfs ファイルシステムを作成するためのコマンド。
- -t 使用するファイルシステムの種類を指定します(例:ext4、xfs)。
- /dev/sdXY パーティションにファイルシステムを作成します(Xはディスク、Yはパーティション番号)。
- 例:
- mkfs -t ext4 /dev/sda1 # /dev/sda1 にext4ファイルシステムを作成
- mount パーティションをマウントするためのコマンド。
- /dev/sdXY パーティションを指定してマウントします。
-t ファイルシステムの種類を指定します。 - 例:
- mount /dev/sda1 /mnt # /dev/sda1 パーティションを /mnt マウント
- /dev/sdXY パーティションを指定してマウントします。
- umount パーティションのアンマウントを行うコマンド。
- -l 強制的にアンマウントを試みます。
- 例:
- umount /mnt # /mnt をアンマウント
ファイルシステムの作成とマウント
主要なファイルシステムの種類にはext4、XFS、NTFSなどがあります。
- mkfs ファイルシステムの作成
- 例 ext4ファイルシステムの作成
- mkfs.ext4 /dev/sdX
- 例 ext4ファイルシステムの作成
- mount ディレクトリのマウント(ファイルシステムをディレクトリに接続する。)
- 例 ファイルシステムを/mntにマウント
- mount /dev/sdX /mnt
- 例 ファイルシステムを/mntにマウント
- fstab ファイルシステムを自動的にマウントするための設定を行う。
- /etc/fstabファイルを編集し、エントリを追加する。
- 例 /etc/fstabファイルのエントリ
- /dev/sdX /mnt ext4 defaults 0 0
- 例 /etc/fstabファイルのエントリ
- /etc/fstabファイルを編集し、エントリを追加する。
- マウントオプション:
- マウント時に指定できる一般的なオプションには以下のものがあります。
- -t ファイルシステムの種類を指定。
- -o 追加のオプションを指定 (例 rw - 読み書き可能)。
- noatime アクセス時刻の更新を無効にする。
- defaults 標準のマウントオプションを使用。
ディスク容量の監視と管理
- df (ディスクフリー) ディスク容量と使用状況を表示するコマンドです。
- よく使うオプション:
- -h 人間に読みやすい形式で表示
- -T ファイルシステムの種類を表示
- 例:
- df -h
- du (ディスク使用量) ディレクトリまたはファイルのディスク使用量を表示します。
- よく使うオプション:
- -h 人間に読みやすい形式で表示
- -s サブディレクトリの合計を表示
- 例:
- du -sh /path/to/directory
- ncdu (NCurses Disk Usage) ディスク使用量を視覚的に調査するための対話型ユーティリティです。通常、- インストールが必要です。
- インストール方法 (Debian/Ubuntu):
- sudo apt-get install ncdu
- 使用方法:
- ncdu /path/to/directory
- インストール方法 (Debian/Ubuntu):
- duの結果のソート duの結果をソートするために、sortコマンドを組み合わせて使用できます。たとえば、- 最もディスクを使用しているディレクトリを表示するには次のようにします:
- du -h /path/to/directory | sort -rh | head -n 10
システム設定:
- sudo スーパーユーザー権限でコマンドを実行するためのコマンド。sudoの後にコマンドを追加して実行しま- す。一般的なオプションには、 -i(rootユーザーの環境でコマンドを実行)や -u(別のユーザーとしてコマン- ドを実行)などがあります。
- 例:
- sudo apt-get update
- apt (Debian/Ubuntu) パッケージ管理とシステム更新に使用するコマンド。一般的なオプションには、- install(パッケージのインストール)、remove(パッケージの削除)、update(パッケージリストの更- 新)、upgrade(アップグレード可能なパッケージのアップグレード)などがあります。
- 例:
- sudo apt install package_name
- yum (Red Hat/CentOS) パッケージ管理とシステム更新に使用するコマンド。一般的なオプションには、- install(パッケージのインストール)、remove(パッケージの削除)、update(パッケージリストの更- 新)、upgrade(アップグレード可能なパッケージのアップグレード)などがあります。
- 例:
- sudo yum install package_name
- systemctl システムのサービス(systemdユニット)の管理に使用するコマンド。一般的なオプションには、- start(サービスの開始)、stop(サービスの停止)、enable(ブート時に自動起動)、disable(ブート時- に自動起動しない)などがあります。
- 例:
- sudo systemctl start service_name
- これらのコマンドとオプションを使用することで、Linuxシステムの設定、アップデート、およびサービスの管理が行えます。
- システム設定に応じて、ディストリビューションごとに異なるコマンドが使用されることに注意してください。
ネットワーク設定と管理
- ifconfig ネットワークインターフェイスの設定と情報を表示するコマンド。よく使うオプションは以下です。
- -a すべてのインターフェイスを表示。
- [interface] 特定のネットワークインターフェイスに関する情報を表示。
- ip 新しいネットワークツールで、より高度なネットワーク設定と情報取得を提供します。一般的なオプション- には次のものがあります。
- addr IPアドレス情報を表示。
- link ネットワークインターフェースのリンク状態を表示。
- netstat ネットワーク接続とルーティングテーブルの情報を表示するコマンド。よく使うオプションは以下で- す。
- -tuln:TCPとUDPポートのリスニング状態を表示。
- -r:ルーティングテーブルを表示。
- route ルーティングテーブルを設定または表示するコマンド。よく使うオプションは以下です。
- add:新しいルートを追加。
- del:既存のルートを削除。
- ping ネットワークホストへの応答時間を確認するために使用されるコマンド。
- 一般的にはping で使用。
- traceroute パケットがネットワークを通過する経路を表示するコマンド。よく使うオプションは以下です。
- -n:ホスト名の逆引きを行わず、IPアドレスのみを表示。
- ifup および ifdown ネットワークインターフェイスをアップまたはダウンにするためのコマンド。
- ifup :指定したインターフェイスをアクティブにする。
- ifdown :指定したインターフェイスを非アクティブにする。
- ssh セキュアなリモートシェル接続を確立するためのコマンド。一般的な使用法はssh user@hostname。
システムログとログファイルの確認
- tail ログファイルの末尾を表示するために使用します。一般的なオプションには次のものがあります。
- -f:ログファイルをリアルタイムで監視し、新しいログエントリが追加されるたびに表示します。
- -n:表示する行数を指定します。例 tail -n 20 /var/log/syslog(最後の20行を表示)。
- cat ファイル全体を表示するために使用します。ただし、大きなログファイルの場合には適していません。
- 例 - cat /var/log/syslog。
- grep ログファイル内から特定のキーワードを検索するために使用します。一般的なオプションには次のものが- あります。
- -i:大文字と小文字を区別せずに検索します。
- -C:検索結果の前後に指定した行数のコンテキストを表示します。
- 例 grep -i error /var/log/syslog- ("error"というキーワードを含む行を表示)。
- less ページ単位で長いログファイルを閲覧するために使用します。スクロールと検索が可能です。ファイルを- 開くには、ターミナルで less /var/log/syslog などと入力します。
- dmesg カーネルメッセージを表示します。特にシステムの起動時の詳細なログ情報を確認するのに便利です。
- オプションなしで使用します。
サービスとデーモンの管理(systemdなど)
- systemctl systemdを使用してサービスの管理を行うコマンド。
- start サービスを開始します。
- stop サービスを停止します。
- restart サービスを再起動します。
- enable システム起動時にサービスを有効にします。
- disable システム起動時にサービスを無効にします。
- status サービスの状態を表示します。
ユーザーとセキュリティ:
- useradd 新しいユーザーアカウントを作成します。
- -m ホームディレクトリを作成します。
- -G ユーザーを指定したグループに追加します。
- passwd ユーザーのパスワードを変更します。
- userdel ユーザーアカウントを削除します。
- groupadd 新しいグループを作成します。
- usermod ユーザーの属性を変更します。
パスワードポリシーとセキュリティ設定
- passwd ユーザーのパスワードを変更します。
- chage パスワードの有効期限を設定します。
- pam_tally2 ログイン試行回数を追跡し、アカウントのロックを制御します。
- fail2ban 不正なアクセスをブロックするための侵入防止システムを設定します。
ファイアウォールの設定
- iptables パケットフィルタリングファイアウォールを設定します。
- ufw Uncomplicated Firewallを使用して簡単にファイアウォールルールを設定します。
- enable ファイアウォールを有効にします。
- disable ファイアウォールを無効にします。
- allow 指定したポートの通信を許可します。
- deny 指定したポートの通信を拒否します。
SELinuxやAppArmorなどのセキュリティフレームワーク
- sestatus SELinuxのステータスを表示します。
- setenforce SELinuxを有効または無効にします。
- 0 無効
- 1 強制
- apparmor_status AppArmorのステータスを表示します。
- apparmor_parser AppArmorポリシーを更新または管理します。
シェルスクリプトとは
- シェルスクリプトは、LinuxやUnix系オペレーティングシステムでの自動化やタスクの自動実行のために使用されるテキストファイルです。
- 一般的なシェルスクリプトの拡張子は ".sh" です。
Bashスクリプトの基本的な文法
- 変数 変数を宣言するには、変数名を指定して "=" を使います。例 my_var="Hello"
- コマンド実行 コマンドをバッククォート `` または $() で囲んで実行します。例 result=$(ls)
- 条件文 if 文を使って条件分岐を行います。
- 例:
if [ "$var" = "value" ]; then
echo "Match"
else
echo "No match"
fi
- ループ for ループや while ループを使って反復処理ができます。
- 関数 関数を定義してコードを再利用できます。
- 例:
my_function() {
echo "Function called"
}
シェルスクリプトの作成と実行
- シェルスクリプトを作成するには、テキストエディタを使用してスクリプトファイルを作成し、適切な権限を与える必要があります。
- シェルスクリプトファイルを実行するには、ターミナルで以下のコマンドを使用します:
chmod +x script.sh # 実行権限を与える
./script.sh # スクリプトを実行
- または、bash コマンドを使用しても実行できます
bash script.sh
パッケージ管理システム(例:apt、yum)の使用
- パッケージ管理システムを使ってソフトウェアのインストール、更新、削除が可能。
- パッケージ管理システムとしてAPTとYumを例に挙げます。
- 管理者権限が必要です。
APT (Debian/Ubuntu系) コマンド:
パッケージの検索:
apt search <パッケージ名>
パッケージのインストール:
apt install <パッケージ名>
パッケージのアップグレード:
apt upgrade
パッケージの削除:
apt remove <パッケージ名>
パッケージ情報の表示:
apt show <パッケージ名>
アップデート可能なパッケージのリスト表示:
apt list --upgradable
Yum (Red Hat/CentOS/Fedora系) コマンド:
パッケージの検索:
yum search <パッケージ名>
パッケージのインストール:
yum install <パッケージ名>
パッケージのアップグレード:
yum update
パッケージの削除:
yum remove <パッケージ名>
インストール済みパッケージのリスト表示:
yum list installed
ネットワーキング:
- ping ホストへのネットワーク接続を確認する。
- よく使うオプション -c(指定回数の送信)、-i(送信間隔)。
- ifconfig(またはipコマンド) ネットワークインターフェース情報を表示。
- よく使うオプション なし(情報を表示するだけ)。
-
ifconfig(またはipコマンド) ネットワークインターフェースの設定を変更。
- up(インターフェースを有効にする)、
- down(インターフェースを無効にする)。
-
netstat ネットワーク統計情報を表示。
- よく使うオプション
- -t(TCP接続)、
- -u(UDP接続)。
- route ルーティング情報を表示および設定。
- よく使うオプション
- add(ルートを追加)、
- del(ルートを削除)。
- nslookup(またはdigやhostなどのDNSツール) ドメイン名をIPアドレスに解決する。
- よく使うオプション なし。
- dig
SSHとリモートアクセスのセキュリティ
- ssh SSHセッションを開始し、リモートホストに接続する。
- -p(ポート指定)、
- -i(秘密鍵の指定)。
- fail2ban 失敗したログイン試行に対するセキュリティ対策を設定。SSHブルートフォース攻撃から保護する。
- よく使うオプション なし(設定ファイルでカスタマイズ)。
システムモニタリング:
- top システムのリソース使用状況をリアルタイムで表示。
- よく使うオプション なし(対話的な監視)。
- ps 実行中のプロセスを表示。
- よく使うオプション aux(詳細な情報を含む全プロセスを表示)。
- htop topのようなシステムモニタリングツールで、より詳細な情報とインタラクティブな操作が可能。
- よく使うオプション なし(対話的な監視)。
リソース使用率の監視(CPU、メモリ、ディスク)
- top リアルタイムでシステムのリソース使用率を監視します。
- -c コマンド名を表示
- -p 特定のプロセスの情報を表示
- 1 CPUコアごとの使用率を表示
- htop topの洗練された代替コマンド。インタラクティブで使いやすく、CPU、メモリ、およびプロセスの情報- を表示します。
- free メモリ使用状況を表示します。
- -m メガバイト単位で表示
- -g ギガバイト単位で表示
- df ディスク使用状況を表示します。
- -h 人間が読みやすい形式で表示
- -T ファイルシステムの種類を表示
- du ディスク使用量を特定のディレクトリで調べます。
- -h 人間が読みやすい形式で表示
- -s サブディレクトリの合計を表示
ログ分析とトラブルシューティング
- tail ログファイルの末尾を表示するコマンドです。便利なオプションには以下があります:
- -f:リアルタイムでログファイルをモニタリングします。
- -n:表示する行数を指定します。
- 例 tail -f /var/log/syslog でシステムログをリアルタイムでモニタリングできます。
- grep テキスト内でパターンを検索するためのコマンドです。一般的なオプションには以下があります:
- -i:大文字と小文字を区別しないで検索します。
- -r:ディレクトリ内のすべてのファイルを再帰的に検索します。
- 例 grep -i "error" /var/log/syslog でシステムログ内で"error"という単語を検索します。
- journalctl systemdジャーナルからログ情報を表示するためのコマンドです。便利なオプションには以下が- あります:
- -u:特定のサービスのログを表示します。
- -n:表示する行数を指定します。
- 例 journalctl -u apache2 -n 50 でApache2の最新50行のログを表示します。
- dmesg カーネルメッセージを表示するコマンドです。特にブート時のトラブルシューティングに役立ちます。
- 例 dmesg | grep -i "error" でエラーメッセージを検索します。
- strace プロセスのシステムコールとシグナルをトレースするためのコマンドです。詳細な情報を提供します。
- 例 strace -p で特定のプロセスをトレースします。
シンボリックリンク、ハードリンク
- シンボリックリンク:
- ln -s シンボリックリンクを作成します。 はリンク先のファイルやデ- ィレクトリのパスで、 はリンクの名前です。
- ls -l シンボリックリンクの詳細情報を表示します。
- unlink シンボリックリンクを削除します。
- ハードリンク:
- ln ハードリンクを作成します。 はリンク元のファイルのパスで、- はリンクの名前です。
- ls -i ファイルのinode番号を確認し、同じinode番号を持つファイルがハードリンクです。
- ハードリンクはデータを共有し、元のファイルが変更されるとすべてのリンクから変更が反映されます。
圧縮・解凍
- ファイルの圧縮:
- tar -czvf ファイルやディレクトリをtarとgzipを使用して圧縮します。
- zip ファイルをZIPアーカイブに圧縮します。
- ファイルの解凍:
- tar -xzvf tar.gzアーカイブを解凍します。
- unzip ZIPアーカイブを解凍します。
- 圧縮と解凍のオプション:
- -c アーカイブを作成
- -x アーカイブを抽出
- -z gzipを使用してアーカイブを圧縮または解凍
- -v 詳細情報を表示
- -f アーカイブ名を指定