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のコマンド参照表
※詳細については、後日追記します

追記

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

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