Linux コマンド ~リファレンス~

# Linuxコマンド

便利な各種コマンドをリマインダ。  
業務で使用する際に便利だなーと感じたものを逐次追記する。

> 自分用にこれ見ておけばなんとかなる。みたいなものが欲しかっただけです。
個人用リマインダなのでたどり着いてしまった人すみません

<h1 id="commandList">コマンド一覧</h1>

現在まとめおわっているレコード末尾に`*`をつける

## コンソール関連

| コマンド | 概要 |
|:-:|:-:|
| **[cd](#cd)** | ワーキングディレクトリ変更 |
| **[pwd](#pwd)** | 現在のワーキングディレクトリの絶対パス表示 | 
| **[which](#which)** | 実行コマンドのbin(実体)の絶対パス表示 |
| **[w](#w)** | 現在システムにログインしているユーザを表示 |
| **[clear](#clear)** | コンソールログをまっさらにする |
| **[history](#history)** | コマンド実行履歴を表示 |
| **[man](#man)** | コマンドのマニュアル表示 |
| **[yum](#yum)** | yum(パッケージ管理ツール)のあれこれ |
| **[head](#head)** | コマンド結果出力を何行表示するか指定 |
| **[](#)** |  |

## 監視関連

| コマンド | 概要 |
|:-:|:-:|
| **[top](#top)** | システム全体の情報(大抵見れる) |
| **[ps](#ps)** | 動作中プロセス一覧取得 |*
| **[pstree](#pstree)** | プロセスの親子関係が可視化できる版`ps`コマンド |
| **[uptime](#uptime)** | ロードアベレージを表示 |
| **[df](#df)** | ファイルシステムのディスク使用量を表示 |
| **[du](#du)** | ファイル/ディレクトリのディスク使用量を表示 |
| **[free](#free)** | 物理メモリ/スワップの使用量と空きを表示 |
| **[lsof](#lsof)** | 特定のファイルを開いているプロセスを特定 |
| **[ss](#ss)** | 接続待ちのポートを調べる |
| **[tcpdump](#tcpdump)** | ネットワーク通信の生のデータ(パケットとか)を取得 |
| **[](#)** |  |

## ファイル/ディレクトリ操作関連

| コマンド | 概要 |
|:-:|:-:|
| **[mkdir](#mkdir)** | ディレクトリ作成 |
| **[touch](#touch)** | ファイル作成 |
| **[mv](#mv)** | ファイル/ディレクトリ移動 |
| **[rm](rm)** | ファイル/ディレクトリ削除 |
| **[rmdir](rmdir)** | **空の**ディレクトリ削除 |
| **[cp](#cp)** | ファイル/ディレクトリコピー |
| **[chmod](#chmod)** | ファイル/ディレクトリのアクセス権限(パーミッション)を変更 |
| **[chown](#chown)** | ファイル/ディレクトリのオーナーやグループの変更 | 
| **[ln](#ln)** | ファイル/ディレクトリのリンク作成 |
| **[scp](#scp)** | scp通信でリモートサーバにファイル/ディレクトリ転送 |
| **[](#)** |  |


## ファイル/ディレクトリ検索関連

| コマンド | 概要 |
|:-:|:-:|
| **[ls](#ls)** | ディレクトリ内のファイル/ディレクトリ一覧取得 | 
| **[cat](#cat)** | (連結可能な)ファイル内容表示 |
| **[less](#less)** | (編集可能な)ファイル内容表示 |
| **[find](#find)** | ファイル検索 | 
| **[grep](#grep)** | 文字列検索 |
| **[diff](#diff)** | 2ファイルの差分表示 |
| **[tail](#tail)** | ファイルの末尾指定行を表示 | 
| **[tailf](#tailf)** | ファイルの末尾10行を**リアルタイム**表示 | 
| **[more](#more)** | ファイルをページ単位で閲覧 <br> 行数の多いファイルで便利 | 
| **[](#)** |  | 
| **[](#)** |  | 
| **[](#)** |  | 

***

# 各種コマンド詳細

※上記のテーブルの順序が変わっても順序に不整合が起きないよう、以下はアルファベット順で記載する  
※オプションはある程度使用頻度が高いものをリストアップしている  
全量が見たい場合は`man [コマンド名]`やネットなどで確認

***
<h2 id="cd">cd</h2>

`change directory`

### 概要

ワーキングディレクトリを変更するためのコマンド。  
オプションを使って実行する機会は少ない。

### オプション

| オプション | 機能 |
|:-:|:-:|
| -L | 移動先がシンボリックリンクだった場合シンボリックリンクに移動する |
| -P | 移動先がシンボリックリンクだった場合シンボリックリンクのターゲット(作成元)に移動する |

### **Sample Code**

#### 入力パターン

```console
# ルートディレクトリに移動
$ cd /

# 絶対パスで移動
$ cd /var/log/

# 相対パスで移動
$ ./var/

# ひとつ前のディレクトリに移動
# ../
```

[コマンド一覧に戻る](#commandList)

***
<h2 id="clear">clear</h2>

### 概要

コンソール出力を消去する  
`Ctrl + l`でclearコマンドと同様の操作ができる。

### **Sample Code**

```console
$ clear
```

[コマンド一覧に戻る](#commandList)

***
<h2 id="head">head</h2>

### 概要

出力結果を頭から何行分表示するかを制御するコマンド  
膨大なサイズのログファイルを`cat`したり、  
大量のファイルのあるディレクトリを`ls`したり、  
なんて時にすべて表示してしまうと非常に見づらくなるのでそれを制御するために使う。

### オプション

| オプション | 機能 |
|:-:|:-:|
| -n | 行数指定 |
| -q | ファイル名を表示しない |
| -v | ファイル名を常に表示する |

### **Sample Code**

```console
# /var/log ディレクトリの内、容量食ってるランキング
$ ls -lSh | head -n 10
```

[コマンド一覧に戻る](#commandList)

***
<h2 id="history">history</h2>

### 概要

コマンド実行履歴を表示する

### オプション

| オプション | 機能 |
|:-:|:-:|
| 整数値 | 履歴の末尾指定行を表示 |
| -c | 履歴を全削除 |
| -d [番号] | 指定した番号の履歴削除 |
| -a | 履歴ファイルに現在セッションの履歴を追加 |
| -n | 履歴ファイルからまだ読み込まれていない行もすべて読み込む |
| -r [ファイル] | 履歴ファイルを読み込み、内容を履歴一覧に追加 |
| -w [ファイル] | 現在の履歴を履歴ファイルに上書き |

### **Sample Code**

#### 参照

```console
# 10行抽出
$ history 10
```

#### 削除

```console
# 履歴全削除
$ history -c

# 10番の履歴のみ削除
$ history -d 10
```

[コマンド一覧に戻る](#commandList)

***
<h2 id="man">man</h2>

### 概要

コマンドのマニュアルを表示する  
デフォルトではマニュアルは`less`コマンドを使用して表示する。

マニュアルにはセクション番号が割り当てられていて、番号を指定するとその種類のマニュアルを表示できる。  
指定しない場合は一番若い(小さい)番号のマニュアルが表示される。  

基本的には`$ man [コマンド名]`くらいしか使わない(はず)

<details><summary>セクション番号</summary>

| 番号 | 項目 | 詳細 |
|:-:|:-:|:-:|
| 1 | Linuxコマンド | 基本的なLinuxコマンド |
| 2 | システムコール | カーネル関数 |
| 3 | ライブラリコール | 表示関数や算術関数など |
| 4 | スペシャルファイル | デバイス入出力に関するファイル |
| 5 | ファイルのフォーマット | `/etc`内にある設定ファイルのフォーマットなど |
| 6 | ゲーム/デモ | 多分使わない |
| 7 | マクロ | 起動シーケンスなど |
| 8 | システム管理コマンド | 管理権限コマンドなど |
| 9 | カーネルルーチン | 非標準 |

</details>

### オプション

| オプション | 機能 |
|:-:|:-:|
| -a | 対象マニュアルを全表示 |
| -d | デバッグ情報を表示 |
| -k | マニュアル検索をする |
| -K | マニュアル説明文の検索をする |
| -P | ページャーを指定する |
| -C | 表示設定用ファイルを指定する |

### **Sample Code**

```console
# gitコマンドのマニュアル
$ man git

# grepコマンドのマニュアル
$ man grep
```

[コマンド一覧に戻る](#commandList)

***
<h2 id="ps">ps</h2>

### 概要

動作中のプロセスを表示するコマンド   
topコマンドとコマンド実行時の状態を出力する。(継続監視はしない)

### オプション

| オプション | 機能 |
|:-:|:-:|
| -A | 全プロセス表示 |
| a | 端末操作のプロセス表示 |
| x | 端末操作以外のプロセス表示 |
| r | 現在実行しているプロセスを表示 <br> ※アイドル状態のプロセスを除く |
| c | 実行しているコマンド名を表示 |
| e | 実行しているコマンド名と環境変数を表示 |
| u | CPUやメモリ使用率も表示 |
| h | 項目名非表示 |
| l | プロセスの状態も表示 |
| f | プロセスを階層表示 |
| o | 指定したリスト順で表示 |
| -C | 実行しているプロセスやプログラム名を指定 |
| -u | 実行しているユーザを指定 |
| -g | プロセス実行しているグループを指定 |
| -p | プロセスIDで指定 |

### **Sample Code**

```console
# 実行中プロセスのCPUやメモリの使用率を調べる
$ ps axu

# 上記でプロセス名までわかっている場合
$ ps axu | grep "[a]uditd"

# 特定のプロセスの起動時間を調べる
$ ps -e | grep [プロセス名]
```

[コマンド一覧に戻る](#commandList)

***
<h2 id="pstree">pstree</h2>

### 概要

現在動作中のプロセスをツリー形式で表示するコマンド。  
`httpd`みたいなアクセスしてくるユーザが増えるごとに子プロセスを生成するようなプロセスの場合に親子関係をわかりやすく表示できる。

### オプション

| オプション | 機能 |
|:-:|:-:|
| -a | コマンドライン引数も表示 |
| -p | プロセスIDを表示 |
| -l | 長い行で表示 |
| -s [PID] | 指定したプロセスの親を表示 |
| -h | カレントプロセスとその先祖プロセス強調表示 |
| -H [PID] | 指定したプロセスとその先祖プロセス強調表示 |
| -A | ASCII文字で表示 <br> ※見易さの好みの問題 |
| -U | UTF-8の罫線文字で表示 <br> ※見易さの好みの問題 |
| [ユーザ名] | 指定したユーザが実行しているプロセスを表示 |

### **Sample Code**

#### rootユーザのプロセスを表示

```console
$ pstree root
```

#### (非推奨)すべてのプロセスの親子関係表示

量がすごいためお勧めはしない。  
`more`コマンドと併用する。

```console
$ pstree -U | more
```

[コマンド一覧に戻る](#commandList)

***
<h2 id="pwd">pwd</h2>

`print working directory`

### 概要

現在のワーキングディレクトリの絶対パスを表示するコマンド。

### オプション

| オプション | 機能 |
|:-:|:-:|
| -L | シンボリックリンクをそのまま表示 |
| -P | シンボリックリンクの作成元のパスを表示 |

### **Sample Code**

```console
$ pwd
```

[コマンド一覧に戻る](#commandList)

***
<h2 id="top">top</h2>

### 概要

現在実行中のプロセスをリアルタイムで監視するコマンド  
`q`を入力すると監視が終了する

### オプション

| オプション | 機能 |
|:-:|:-:|
| -d [秒.ミリ秒] | 監視間隔指定 |
| -n [回数] | 監視回数 |
| -b | バッチモードでキー操作を受け付けず、キルされるまで続く |
| -u [ユーザ名] | 指定したユーザが実行しているプロセスのみ監視 |
| -p [プロセスID] | 指定したプロセスIDのプロセスのみ監視 |
| -c | プログラム名/コマンドラインの表示切替 <br> ※実行中は`c`で切り替え可能 |
| -i | アイドル状態のプロセスの表示切替 <br> ※実行中は`i`で切り替え可能 |
| -o [項目] | ソートする項目を指定(デフォルトは`%CPU`) |

### **Sample Code**

```console
# rootユーザの実行プロセス監視
$ top -u root

# メモリ使用率順に表示
$ top -o %MEM

# PID[1234]と[5643]のプロセスを監視
$ top -p 1234,5643
```

[コマンド一覧に戻る](#commandList)

***
<h2 id="uptime">uptime</h2>

### 概要

Linuxの稼働時間を調べるコマンド。  
システムの負荷を調べるためにロードアベレージを確認する用途で使用することが多い(多分)。

### オプション

| オプション | 機能 |
|:-:|:-:|
| -s | システムを起動した日時を表示 |
| -p | 経過時間のフォーマット変更 |

### **Sample Code**

#### 基本構文

```console
$ uptime
```

#### システムをいつ起動したかを調べる

```console
$ uptime -s
```

[コマンド一覧に戻る](#commandList)

***
<h2 id="w">w</h2>

### 概要

現在システムにログインしているユーザを表示するコマンド。

### オプション

| オプション | 機能 |
|:-:|:-:|
| -h | ヘッダーを非表示にする |
| -u | 現在プロセスとCPU時間を計算している場合にユーザ名の違いを無視する |
| -s | ログイン時刻/JCPU/PCPUを非表示にする |
| -f | FROM項目非表示にする |
| user | 表示したいユーザーを指定する |

### **Sample Code**

#### 基本構文

```console
$ w
```

#### ユーザーを指定して表示

```console
$ w user [ユーザー名]
```

[コマンド一覧に戻る](#commandList)

***
<h2 id="which">which</h2>

### 概要

コマンドの実体(bin)の配置場所を表示するコマンド。

### オプション

| オプション | 機能 |
|:-:|:-:|
| -a | 環境変数PATHにあるすべての実行ファイルを表示する |
| -r | 標準入力からエイリアスを読み込んで、合致したものだけ表示する |
| --skip-dot | `./`から始まるディレクトリ(相対パスでの指定)を検索対象外とする |
| --skip-tilde | `~`から始まるディレクトリ(ホームディレクトリからの相対パスでの指定)を検索対象外とする |

### **Sample Code**

#### 基本構文

```console
# 環境変数PATH上のコマンド全検出
$ which -a

# 特定のコマンドの実行ファイル検索
$ which [コマンド名]
```

#### gitの実行ファイル検索

```console
$ which git
```

[コマンド一覧に戻る](#commandList)

***
<h2 id="yum">yum</h2>

### 概要

RedHat系ディストリビューションで使用されている`RPMパッケージ`を使うためのパッケージ管理コマンド  
`Yellowdog Updater Modified`の略。

基本はinstall/upadate/eraseによるパッケージの管理。  
いつ何をインストールしたか、などの確認をするhistoryオプションもある。

### オプション

> すごくたくさんあるので一部のみ

| オプション | 機能 |
|:-:|:-:|
| install | パッケージインストール |
| reinstall | パッケージ再インストール |
| downgrade | パッケージダウングレード |
| erase | パッケージ削除 |
| update | パッケージアップデート |
| update-minimal | パッケージのコア部分のみアップデート |
| upgrade | 不要パッケージを考慮したアップデート |
| version | リポジトリのバージョン確認 |
| info | パッケージもしくはそのグループの詳細 |
| history | パッケージ管理履歴の表示 |
| deplist | パッケージの依存性確認 |
| check | rpmDBの問題確認 |
| check-update | 更新可能なパッケージ確認 |
| clean | キャッシュ削除 |
| updateinfo | リポジトリ更新情報確認 |

### **Sample Code**

#### インストール/更新/削除

```console
# インストール
$ yum install [パッケージ名]

# 更新
$ yum update [パッケージ名]

# 削除
$ yum erase [パッケージ名]
```

#### パッケージ管理詳細

```console
# ヒストリすべて確認
$ yum history list all

# ヒストリを基に確認したいヒストリ詳細確認
$ yum history info [ヒストリのID]
```

#### パッケージの依存確認

```console
# 指定したパッケージが依存しているパッケージの一覧取得
$ yum deplist [パッケージ名]
```

[コマンド一覧に戻る](#commandList)