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カーネルの機能の事です。