Systemdサービスの開始と停止
systemdLinuxでサービスを実行する新しい方法です。systemdには、置き換えられたsysvinitがあります。systemdはLinuxの起動時間を短縮し、Linuxサービスを管理するための標準的な方法になりました。systemdは安定していますが、まだ進化しています。
systemdはinitシステムとして使用され、Linuxカーネルの起動後にステータスの変更が必要なサービスとデーモンの両方を管理するために使用されます。ステータス変更により、サービス状態の開始、停止、リロード、調整が適用されます。
まず、サーバーで現在実行されているsystemdのバージョンを確認しましょう。
[centos@localhost ~]$ systemctl --version
systemd 219
+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP
+GCRYPT +GNUTLS +ACL +XZ -LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN
[centos@localhost ~]$
CentOSバージョン7の時点で、この記事の執筆時点で完全に更新されているsystemdバージョン219が現在の安定バージョンです。
systemd-analyzeを使用して、サーバーの最終起動時間を分析することもできます。
[centos@localhost ~]$ systemd-analyze
Startup finished in 1.580s (kernel) + 908ms (initrd) + 53.225s (userspace) = 55.713s
[centos@localhost ~]$
システムの起動時間が遅い場合は、systemd-analyzeblameコマンドを使用できます。
[centos@localhost ~]$ systemd-analyze blame
40.882s kdump.service
5.775s NetworkManager-wait-online.service
4.701s plymouth-quit-wait.service
3.586s postfix.service
3.121s systemd-udev-settle.service
2.649s tuned.service
1.848s libvirtd.service
1.437s network.service
875ms packagekit.service
855ms gdm.service
514ms firewalld.service
438ms rsyslog.service
436ms udisks2.service
398ms sshd.service
360ms boot.mount
336ms polkit.service
321ms accounts-daemon.service
で作業する場合にsystemd、の概念を理解することが重要である単位を。Unitssystemdが解釈する方法を知っているリソースです。ユニットは次のように12種類に分類されます-
- .service
- .socket
- .device
- .mount
- .automount
- .swap
- .target
- .path
- .timer
- .snapshot
- .slice
- .scope
ほとんどの場合、ユニットターゲットとして.serviceを使用します。他のタイプについては、さらに調査することをお勧めします。systemdサービスの開始と停止には、.serviceユニットのみが適用されます。
各ユニットは、次のいずれかにあるファイルで定義されます。
/lib/systemd/system −ベースユニットファイル
/etc/systemd/system −実行時に開始された変更されたユニットファイル
systemctlを使用してサービスを管理する
で動作するようにsystemd、我々は非常に精通取得する必要がありますsystemctlのコマンド。以下は、systemctlの最も一般的なコマンドラインスイッチです。
スイッチ | アクション |
---|---|
-t | サービスやソケットなどのユニットタイプのカンマ区切り値 |
-a | ロードされたすべてのユニットを表示します |
- 状態 | ロード、サブ、アクティブ、非アクティブなど、定義された状態のすべてのユニットを表示します。 |
-H | リモートで操作を実行します。@で区切ってホスト名またはホストとユーザーを指定します。 |
基本的なsystemctlの使用法
systemctl [operation]
example: systemctl --state [servicename.service]
ボックスで実行されているすべてのサービスを簡単に確認できます。
[root@localhost rdc]# systemctl -t service
UNIT LOAD ACTIVE SUB DESCRIPTION
abrt-ccpp.service loaded active exited Install ABRT coredump hook
abrt-oops.service loaded active running ABRT kernel log watcher
abrt-xorg.service loaded active running ABRT Xorg log watcher
abrtd.service loaded active running ABRT Automated Bug Reporting Tool
accounts-daemon.service loaded active running Accounts Service
alsa-state.service loaded active running Manage Sound Card State (restore and store)
atd.service loaded active running Job spooling tools
auditd.service loaded active running Security Auditing Service
avahi-daemon.service loaded active running Avahi mDNS/DNS-SD Stack
blk-availability.service loaded active exited Availability of block devices
bluetooth.service loaded active running Bluetooth service
chronyd.service loaded active running NTP client/server
サービスの停止
まず、Bluetoothサービスを停止しましょう。
[root@localhost]# systemctl stop bluetooth
[root@localhost]# systemctl --all -t service | grep bluetooth
bluetooth.service loaded inactive dead Bluetooth service
[root@localhost]#
ご覧のとおり、Bluetoothサービスは現在非アクティブです。
Bluetoothサービスを再開します。
[root@localhost]# systemctl start bluetooth
[root@localhost]# systemctl --all -t service | grep bluetooth
bluetooth.service loaded active running Bluetooth service
[root@localhost]#
Note− .serviceが暗黙指定されているため、bluetooth.serviceを指定しませんでした。扱っているサービスに追加するユニットタイプを考えることをお勧めします。したがって、これ以降は、.service拡張子を使用して、サービスユニットの操作に取り組んでいることを明確にします。
サービスで実行できる主なアクションは次のとおりです。
開始 | サービスを開始します |
やめる | サービスを停止します |
リロード | サービスを停止せずにアクティブな構成をリロードします(システムv initのkill-HUPなど) |
再起動 | サービスを開始してから停止します |
有効にする | 起動時にサービスを開始します |
無効にする | 実行時にサービスが自動的に開始されないようにします |
上記のアクションは、主に次のシナリオで使用されます-
開始 | 停止状態になっているサービスを起動します。 |
やめる | サービスを一時的にシャットダウンするため(たとえば、サービスをアップグレードするときのように、サービスによってロックされたファイルにアクセスするためにサービスを停止する必要がある場合) |
リロード | 構成ファイルが編集されていて、サービスを停止せずに新しい変更を適用したい場合。 |
再起動 | リロードと同じシナリオですが、サービスはリロードをサポートしていません。 |
有効にする | 無効化されたサービスを起動時に実行する場合。 |
無効にする | 主にサービスを停止する必要がある場合に使用されますが、起動時に開始されます。 |
サービスのステータスを確認するには-
[root@localhost]# systemctl status network.service
network.service - LSB: Bring up/down networking
Loaded: loaded (/etc/rc.d/init.d/network; bad; vendor preset: disabled)
Active: active (exited) since Sat 2017-01-14 04:43:48 EST; 1min 31s ago
Docs: man:systemd-sysv-generator(8)
Process: 923 ExecStart = /etc/rc.d/init.d/network start (code=exited, status = 0/SUCCESS)
localhost.localdomain systemd[1]: Starting LSB: Bring up/down networking...
localhost.localdomain network[923]: Bringing up loopback interface: [ OK ]
localhost.localdomain systemd[1]: Started LSB: Bring up/down networking.
[root@localhost]#
ネットワークサービスの現在のステータスを表示します。ネットワークに関連するすべてのサービスを確認したい場合は、-を使用できます。
[root@localhost]# systemctl --all -t service | grep -i network
network.service loaded active exited LSB: Bring up/
NetworkManager-wait-online.service loaded active exited Network Manager
NetworkManager.service loaded active running Network Manager
ntpd.service loaded inactive dead Network Time
rhel-import-state.service loaded active exited Import network
[root@localhost]#
に精通している人のために sysinitサービスを管理する方法では、systemdに移行することが重要です。systemdは、Linuxでデーモンサービスを開始および停止する新しい方法です。