CentOS7系と6系のコマンドの違いについて

# CentOS7系と6系のコマンドの違いについて
**備忘録として、よく使いそうなコマンドをまとめてみました。逐次更新予定です。
もしかしたら、間違いがあるかもしれないのですm(_ _)m**

## サービス系コマンド
CentOS7系ではサービス起動デーモンとして、SysVinit/Upstartに代わって、
systemdが導入されたことによって、サービス系コマンドが大幅に変更されました

### サービスの状態確認
```
#################################################################################
# 状態の表示（サービス単位）
#################################################################################
# CentOS7系
$ /usr/bin/systemctl status {unit名}

# CentOS6系
$ /sbin/service {サービス名} status
$ /etc/init.d/{サービス名} status

#################################################################################
#状態の表示（全サービス）
#################################################################################
# CentOS7系
$ /usr/bin/systemctl {list-units} --type service

# CentOS6系
$ /sbin/service --status-all
```

### サービスの起動・停止・再起動・設定反映・強制終了
```
#################################################################################
# サービスの起動・停止・再起動
#################################################################################
# CentOS7系
$ /usr/bin/ststemctl {start / stop / restart / reload} {unit名}

# CentOS6系
$ /sbin/service  {start / stop / restart / reload} {サービス名}
$ $ /etc/init.d/{サービス名} {start / stop / restart / reload} 

#################################################################################
# サービスの強制終了
#################################################################################
# CentOS7系
$ /usr/bin/systemctl kill -s 9 {unit名}

# CentOS6系
$ kill -9 PID
```

### サービスの登録・解除・登録確認
CentOS7系のservice・chkconfigコマンドはsystemctlへリダイレクトするシェルスクリプトになっているので、そのまま使えます。ただし、chkconfig --listに関しては、一部のサービスのみしか表示されないので、注意が必要になります。

```
#################################################################################
# サービス定義の表示（全サービス）・登録（サービス単位）
#################################################################################
# CentOS7系
$ /usr/bin/systemctl list-units --type service
$ /usr/bin/systemctl daemon-reload

# CentOS6系
$ ls /etc/init.d/
$ /sbin/chkconfig --add / --del {サービス名}

#################################################################################
# サービスの自動起動確認
#################################################################################
# CentOS7系
$ /usr/bin/systemctl list-unit-files | grep {unit名}
$ /usr/bin/systemctl is-enabled {unit名}

# CentOS6系
$ /sbin/chkconfig --list {サービス名}

#################################################################################
# サービスの有効化・無効化
#################################################################################
# CentOS7系
$ /usr/bin/systemctl enable / disable {unit名}

# CentOS6系
$ /sbin/chkconfig --level 2345 {サービス名} on / off
```

## Unitについて
ざっくり説明すると、デーモンの制御対象のことです。
ちなみに従来のサービスに相当する処理は、「.service」という拡張子がつくファイルで
管理されていて、サービス関連の処理を行う時はこのUnit名を指定します。

また、Unitには他にもマウントポイントの処理を行う「.mount」や
デバイスの処理を行う「.device」、Unitをグループ化する「.target」などがあります。

systemdではこのUnitという単位で様々な処理を行うので是非覚えて下さい！
補足ですが、targetファイルは自作することも出来ます。

### Unitの種類
|Unitの種類  | 説明     |
|:----------|:---------|
|.service  |指定のバイナリを実行する |
|.socket　|systemdがsocketをlistenして、接続があるとプロセスに受け渡す(xinetdの代替的な機能) |
|.target    |複数のUnitをまとめる為に使用する|
|.device　　|udevから通知されたデバイスを表す|
|.snapshot  |ある時点のUnitの状態|
|.path	    |指定のファイルが生成されると指定したサービスを起動する|
|.mount　　 |指定のファイルシステムをマウントする|
|.automount |オートマウント処理を実施する(automountdの代替的な機能)|

## ランレベル系コマンド
通常起動の際は、いずれかのtargetへのシンボリックリンク（通常はmulti-user.targetかgraphical.target）となっているdefault.targetが参照されます

|内容               |CentOS6系| CentOS7系       |
|:-----------------|:---------|:----------------|
|システム停止       |0         |poweroff.target  |
|シングルユーザモード|1         |rescue.target    |
|マルチユーザモード  |3         |multi-user.target|
|グラフィカルモード  |5         |graphical.target|
|再起動             |6         |reboot.target   |
|緊急モード         |N/A       |emergency.target|

### 起動・標準起動モードの変更
```
#################################################################################
# 起動モードの変更
#################################################################################
# CentOS7系
$ systemctl isolate {target名}

# CentOS6系
$ telinit runlevel

#################################################################################
# 標準起動モードの変更
#################################################################################
# CentOS7系
$ sudo systemctl set-default {target名}

# CentOS6系
$ /etc/inittabの編集
```

## ログ確認系コマンド
systemdで起動されたUnitのログは、/var/log/journal以下にバイナリ形式で保存されます。journalctlの表示はデフォルトでページャ(less)で表示されるので、パイプ処理などでページャを使用したくない場合は、--no-pagerオプションを付加する必要があります。
また、デフォルトの設定だと/run/systemd/journal以下にログが書き込まれ、
再起動するとログが消えてしまうので、ログを残したい場合は、/var/log/journalを作成して、
journaldの再起動(systemctl restart systemd-journald)が必要があります。

### ログ確認（サービス単位）
```
# CentOS7系
$ journalctl -u {unit名}

# CentOS6系
$ cat /var/log/{サービス名}
```

### ログ更新監視
```
# CentOS7系
$ journalctl -f -u {unit名}

# CentOS6系
$ tail -f /var/log/{サービス名}
```

### 起動ログの確認
```
# CentOS7系
$ journalctl --dmesg

# CentOS6系
$ dmesg
```

## ネットワーク系コマンド
CentOS7系からiproute2へ移行されたので、ifconfigやnetstatのコマンドが含まれる
net-toolsパッケージがインストールされなくなりました（インストールすれば使えます）

### TCP接続状態表示
```
# CentOS7系
$ ss -tan

# CentOS6系
$ /bin/netstat -tan
```

### インターフェース情報表示（全アクティブ・特定）・統計情報
```
#################################################################################
# インターフェース情報表示（全アクティブ）
#################################################################################
# CentOS7系
$ /sbin/ipaddress show または /sbin/ip a
$ /sbin/ip link show または　/sbin/ip l

# CentOS6系
$ /sbin/ifconfig

#################################################################################
# インターフェース情報表示（特定）
#################################################################################
# CentOS7系
$ /sbin/ipaddress show dev enp0s3　または　/sbin/ip a s dev enp0s3

# CentOS6系
$ /sbin/ifconfig eth0

#################################################################################
# インターフェース毎の統計情報
#################################################################################
# CentOS7系
$ ip -s link　または　ip -s l

# CentOS6系
$ /bin/netstat -i
```

### ルーティングテーブル表示
```
# CentOS7系
$ /sbin/ip route または /sbin/ip r

# CentOS6系
$ /sbin/route
```

### デフォルトゲートウェイの追加・削除
```
# CentOS7系
$ ip route {add / del} default via xxx.xxx.xxx.xxx または /sbin/ip {r / d} a default via
xxx.xxx.xxx.xxx

# CentOS6系
$ /sbin/route {add / del} default gw xxx.xxx.xxx.xxx
```

### ARPテーブルの表示
```
# CentOS7系
$ /sbin/ip neighbour または /sbin/ip n

# CentOS6系
$ /sbin/arp -n
```

## NetworkManager系コマンド
※後日、追記します


## ホスト名操作系コマンド
ホスト名もCentOS7系から、systemdで管理されるようになりました

### hostnameの確認・変更（永続的）
```
#################################################################################
# hostnameの確認
#################################################################################
# CentOS7系
$ hostname または hostnamectl

# CentOS6系
$ hostname

#################################################################################
# hostnameの変更（永続的）
#################################################################################
# CentOS7系
$ hostnamectl set-hostname {新しいホスト名}

# CentOS6系
$ /etc/sysconfig/networkを編集
```

## ファイアウォール系コマンド
CentOS7系からファイアウォールの設定として、iptablesに代わって、firewalldが導入されました
※後日、追記します

## ファイルシステム系コマンド
CentOS7からデフォルトのファイルシステムは、ext4からxfsに変更になりました
[EXT4とXFSのコマンド参照表](https://access.redhat.com/documentation/ja-JP/Red_Hat_Enterprise_Linux/7/html/Installation_Guide/appe-ext4-to-xfs-command-reference.html)
※詳細については、後日追記します

## 追記
今回調べていて、CentOS7系になってかなりの量の変更点があるというより、今までの6系とは
完全に別物のOSになったといった印象を受けました。
多くのディストリビューションでもsystemdの対応を表明しているので、
個人的学習の為にも、ちょこちょこ更新していくつもりです、

cgroupsについても、またまとめたら投稿します。
ちなみにcgroupsは、control groupsの略で、プロセスグループ毎にCPUやメモリ・ディスクI/O等の
利用制限が出来るLinuxカーネルの機能の事です。