コンテンツにスキップ

UNIXハンドブック

出典: フリー教科書『ウィキブックス(Wikibooks)』

はじめに

[編集]

UNIXは、マルチユーザー・マルチタスク対応の強力なオペレーティングシステムです。本ハンドブックでは、UNIXシステムの基本から応用まで、体系的に解説します。

基本コマンド編

[編集]

ファイル操作

[編集]
  • ls ディレクトリ内容の表示
  • cp ファイルのコピー
  • mv ファイルの移動・名前変更
  • ln ファイルのリンク
  • rm ファイルの削除
  • mkdir ディレクトリの作成
  • rmdir 空ディレクトリの削除

基本的なテキスト処理コマンド

[編集]
  • cat ファイルの内容を表示します。
  • head ファイルの先頭部分を表示します。
  • tail ファイルの末尾部分を表示します。
  • more ファイルの内容をページ単位で表示します。
  • less moreコマンドの拡張版で、より柔軟な表示が可能です(lessはPOSIXに含まれていませんが、多くのUNIXで実装されています)。
  • wc ファイルの行数、単語数、文字数をカウントします。

検索と抽出

[編集]
  • grep 指定した文字列を含む行を検索します。
  • sed 行単位の編集を行います。置換、削除、追加などが可能です。
  • awk 行単位の処理を柔軟に行うことができます。

ソートと並べ替え

[編集]
  • sort 行単位でソートします。
  • uniq 連続する重複行を削除します。

切り出しと結合

[編集]
  • cut ファイルから特定の文字列を切り出します。
  • paste 複数のファイルを行ごとに結合します。

その他

[編集]
  • tr 文字の変換を行います。
  • split ファイルを複数の小さなファイルに分割します。
  • join 2つのファイルを共通のフィールドに基づいて結合します。
  • diff 2つのファイルの差分を表示します。

プロセス処理コマンド

[編集]

POSIX規格に厳密に準拠し、様々なUNIX系システムで共通して利用できるプロセス処理コマンドは以下の通りです。

  • ps プロセスのスナップショットを表示します。
  • kill プロセスを終了させます。
  • nice プロセスの優先度を変更します。
  • sleep プロセスを一定時間停止させます。
  • time コマンドの実行時間を計測します。
  • renice 実行中のプロセスの優先度を変更します。

ストレージ管理コマンド

[編集]
  • df ディスク使用量の表示。
  • du ディレクトリサイズの表示。
  • du ディレクトリやファイルのディスク使用量を表示します。
  • mount ファイルシステムをマウントします。
  • umount ファイルシステムをアンマウントします。
  • quota ユーザーやグループごとのディスククォータを管理します。

システム情報取得コマンド

[編集]

vmstat iostat netstat

シェル編

[編集]

シェルとは、ユーザーとオペレーティングシステムの間で命令をやり取りするためのプログラムです。シェルは、コマンドラインインターフェース (CLI) を提供し、ユーザーが入力したコマンドを解釈して実行します。

主な役割には次のものがあります:

  • コマンドの解釈と実行
  • ファイルやプロセスの管理
  • スクリプトを用いたタスクの自動化

代表的なシェルには以下があります:

POSIXシェルは、UNIXシステムで広く使用される標準的なシェルです。

シェルの基本操作

[編集]

シェルは、ユーザーがコマンドを入力し、システムがそれを実行するためのインターフェースです。代表的なシェルとして以下があります。

  • csh (C Shell): BSD UNIXで広く使われるシェル。現在は、tcshに置き換わっている場合が多い。
  • bash (Bourne Again Shell): GNUプロジェクトの一部で、Linuxで一般的。

コマンドの入力と実行

[編集]

シェルではコマンドを入力してEnterキーを押すことで実行されます。以下は一般的なコマンド例です。

# 現在の作業ディレクトリを表示
pwd

# ディレクトリを移動
cd /path/to/directory

# ディレクトリ内のファイル一覧を表示
ls

コマンドの履歴

[編集]

シェルは以前に入力したコマンドを記録します。

# コマンド履歴を表示
history

# 履歴から特定のコマンドを実行 (例: 履歴番号10)
!10

入力補完

[編集]

Tabキーを押すことでコマンドやファイル名の補完が可能です。

環境変数の操作

[編集]

環境変数の確認

[編集]

現在設定されている環境変数を表示します。

# 全ての環境変数を表示  
printenv    
# 特定の変数を表示 (例: PATH)  
echo $PATH

環境変数の設定

[編集]
  • csh
    # 環境変数の設定  
    setenv VARIABLE_NAME value    
    # 例: PATHを追加  
    setenv PATH /new/path:$PATH
    
  • bash
    # 環境変数の設定  
    export VARIABLE_NAME=value    
    # 例: PATHを追加  
    export PATH=/new/path:$PATH
    

リダイレクトとパイプ

[編集]

標準出力のリダイレクト

[編集]

コマンドの出力をファイルに保存します。

# 標準出力をファイルにリダイレクト
command > output.txt

標準エラー出力のリダイレクト

[編集]
  • bash
    # 標準エラーをファイルにリダイレクト  
    command 2> error.txt
    
  • csh
    # 標準エラーをファイルにリダイレクト  
    command >& error.txt
    

パイプ

[編集]

コマンドの出力を別のコマンドの入力に渡します。

# パイプを使用した例
command1 | command2

ジョブ管理

[編集]

ジョブの実行

[編集]

バックグラウンドでコマンドを実行します。

# バックグラウンドで実行
command &

実行中のジョブの確認

[編集]
# ジョブの一覧を表示
jobs

ジョブの停止と再開

[編集]
  • 停止: :
    Ctrl + Z
    
  • 再開(フォアグラウンド):
    fg
    
  • 再開(バックグラウンド):
    bg
    

エイリアスの設定

[編集]

よく使うコマンドを簡略化できます。

  • csh
    # エイリアスの作成  
    alias ll 'ls -l'    
    
    # エイリアスの削除  
    unalias ll
    
  • bash
    # エイリアスの作成  
    alias ll='ls -l'    
    
    # エイリアスの削除  
    unalias ll
    

終了

[編集]

シェルを終了するには以下を入力します。

# シェルの終了
exit

シェルスクリプトとは

[編集]

シェルスクリプトとは、複数のコマンドをテキストファイルに記述して、それを一括で実行できるようにしたものです。これにより、繰り返しの操作や複雑なタスクを効率的に自動化できます。

シェルスクリプトの主な特徴:

  • 簡単な記述でタスクを自動化
  • 他のコマンドラインツールとの連携が容易
  • UNIX環境での作業効率を向上

ネットワーク編

[編集]

ネットワークコマンド

[編集]
  • ping ホストの疎通確認
  • netstat ネットワーク状態の表示
  • ssh セキュアシェル
  • scp セキュアコピー

ネットワーク設定

[編集]
  • インターフェース設定
  • ルーティング設定
  • ファイアウォール設定

セキュリティ編

[編集]

アクセス制御

[編集]
  • ファイルパーミッション
  • ユーザー管理
  • グループ管理

システムセキュリティ

[編集]
  • パスワードポリシー
  • ログ監視
  • セキュリティアップデート

パフォーマンスチューニング編

[編集]

システム監視

[編集]
  • リソース使用率の確認
  • ボトルネックの特定
  • パフォーマンス指標の収集

最適化

[編集]
  • カーネルパラメータの調整
  • プロセス優先度の管理
  • ディスクI/O最適化

トラブルシューティング編

[編集]

問題解決手順

[編集]
  1. 症状の特定
  2. ログの確認
  3. 原因の切り分け
  4. 対策の実施
  5. 検証

附録

[編集]

便利なエイリアス集

[編集]
alias ll='ls -l'
alias la='ls -a'
alias grep='grep --color=auto'

環境変数設定例

[編集]
export PATH=$PATH:/usr/local/bin
export LANG=ja_JP.UTF-8
export EDITOR=vim

トラブルシューティングチェックリスト

[編集]
  1. ディスク容量の確認
  2. プロセス状態の確認
  3. ネットワーク接続の確認
  4. システムログの確認
  5. メモリ使用量の確認

さいごに

[編集]

本ハンドブックで解説した内容は、UNIX系システムの基本的な運用管理に必要な知識の概要です。実際の運用では、システムの特性や要件に応じて、さらに詳細な知識や経験が必要となります。

下位階層のページ

[編集]