自動起動・サービスの起動・停止 (systemdコマンド) [CentOS 7]
CentOS 7のサービスの起動・停止・自動起動について
CentOS 7から自動起動・解除などの設定は、「systemd」に変更されましたので、その設定手順などまとめました
自動起動設定・解除
自動起動の設定は、chkconfigでは、「chkconfig サービス名 on」でしたが、systemctlコマンド使用すると、「systemctl enable サービス名.service」となります
自動起動の解除は、、chkconfigでは、「chkconfig サービス名 off」でしたが、systemctlコマンド使用すると、「systemctl disable サービス名.service」となります
また、サービス名.serviceのserviceを省略しても大丈夫です
# 自動起動の設定 $ sudo systemctl enable httpd.service ln -s '/usr/lib/systemd/system/httpd.service' '/etc/systemd/system/multi-user.target.wants/httpd.service' $ sudo systemctl enable httpd ln -s '/usr/lib/systemd/system/httpd.service' '/etc/systemd/system/multi-user.target.wants/httpd.service' # 自動起動の解除 $ sudo systemctl disable httpd.service rm '/etc/systemd/system/multi-user.target.wants/httpd.service' $ sudo systemctl disable httpd rm '/etc/systemd/system/multi-user.target.wants/httpd.service'
自動起動一覧表示
自動起動の一覧表示は、chkconfigでは、「chkconfig -list」でしたが、systemctlコマンド使用すると
「 systemctl list-unit-files -t service」となります
$ systemctl list-unit-files -t service UNIT FILE STATE arp-ethers.service disabled auditd.service enabled autovt@.service disabled blk-availability.service disabled brandbot.service static chrony-wait.service disabled chronyd.service enabled console-getty.service disabled console-shell.service disabled cpupower.service disabled crond.service enabled dbus-org.freedesktop.hostname1.service static dbus-org.freedesktop.locale1.service static dbus-org.freedesktop.login1.service static dbus-org.freedesktop.machine1.service static dbus-org.freedesktop.NetworkManager.service enabled dbus-org.freedesktop.nm-dispatcher.service enabled dbus-org.freedesktop.timedate1.service static dbus.service static
「STATE」部分の表示されている、状態の意味は以下となります
ステータス(STATE)の意味
表示 | 設定状況 |
enable | 自動起動設定有効 |
disable | 自動起動設定無効 |
static | 単体では自動起動できないサービス |
特定のサービスの自動起動設定の確認
特定サービスの自動起動の設定確認するには、chkconfigでは、「chkconfig –list サービス名」, 「chkconfig –list | grep サービス名」などで表示していましたが、systemctlコマンドでは、「systemctl is-enabled サービス名.service」又は「systemctl list-unit-files | grep サービス名」で確認できます
$ systemctl is-enabled httpd.service enabled $ systemctl is-enabled httpd enabled $ systemctl list-unit-files | grep httpd enabled
サービス起動
CentOS 6では、サービスの起動は「/etc/init.d/サービス名 start」, 「service サービス名 start」で起動していましたが、systemctlコマンドでは「systemctl start サービス名」となります
systemctlコマンドだと起動しても何も表示されませんので、psコマンドなどで起動しているか確認したほうが良さそうです
$ sudo systemctl start httpd $ ps -ef|grep httpd root 1152 1 0 14:05 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND apache 2756 1152 0 15:12 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND apache 2757 1152 0 15:12 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND apache 2758 1152 0 15:12 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND apache 2759 1152 0 15:12 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND apache 2760 1152 0 15:12 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND root 2765 2670 0 15:12 pts/0 00:00:00 grep --color=auto httpd
サービス起動 失敗時
失敗した場合は、以下のようにエラーが表示されますの「systemctl status サービス名」でエラー内容を確認します。「journalctl -xn」コマンドで詳細を確認します
サービスのエラーログの場所がわかれば、そちらのログファイルでも確認できるかと思われます
#起動失敗時 $ sudo systemctl restart httpd Job for httpd.service failed. See 'systemctl status httpd.service' and 'journalctl -xn' for details. $ sudo systemctl status httpd httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled) Active: failed (Result: exit-code) since 木 2015-06-11 15:14:07 JST; 1min 43s ago Process: 2791 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=1/FAILURE) Process: 2739 ExecReload=/usr/sbin/httpd $OPTIONS -k graceful (code=exited, status=0/SUCCESS) Process: 2789 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=1/FAILURE) Main PID: 2789 (code=exited, status=1/FAILURE) 6月 11 15:14:07 cent7-localhost systemd[1]: Starting The Apache HTTP Server... 6月 11 15:14:07 cent7-localhost httpd[2789]: AH00526: Syntax error on line 348 of /etc/ht...f: 6月 11 15:14:07 cent7-localhost httpd[2789]: parameter must be 'on' or 'off' 6月 11 15:14:07 cent7-localhost systemd[1]: httpd.service: main process exited, code=exit...RE 6月 11 15:14:07 cent7-localhost kill[2791]: kill: cannot find process "" 6月 11 15:14:07 cent7-localhost systemd[1]: httpd.service: control process exited, code=e...=1 6月 11 15:14:07 cent7-localhost systemd[1]: Failed to start The Apache HTTP Server. 6月 11 15:14:07 cent7-localhost systemd[1]: Unit httpd.service entered failed state. Hint: Some lines were ellipsized, use -l to show in full. $ sudo journalctl -xn -- Logs begin at 木 2015-06-11 14:39:02 JST, end at 木 2015-06-11 15:14:07 JST. -- 6月 11 15:13:54 cent7-dti systemd[1]: Started The Apache HTTP Server. -- Subject: Unit httpd.service has finished start-up -- Defined-By: systemd -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel ### 省略 ### -- Unit httpd.service has begun starting up. 6月 11 15:14:07 cent7-dti httpd[2789]: AH00526: Syntax error on line 348 of /etc/httpd/conf/httpd.conf: 6月 11 15:14:07 cent7-dti httpd[2789]: parameter must be 'on' or 'off' 6月 11 15:14:07 cent7-dti systemd[1]: httpd.service: main process exited, code=exited, status=1/FAILURE 6月 11 15:14:07 cent7-dti kill[2791]: kill: cannot find process "" 6月 11 15:14:07 cent7-dti systemd[1]: httpd.service: control process exited, code=exited status=1 6月 11 15:14:07 cent7-dti systemd[1]: Failed to start The Apache HTTP Server.
この場合のエラー原因は、/etc/httpd/conf/httpd.conf の348行目が原因ですので記述ミスを確認すれば大丈夫かと思います
サービス停止
CentOS 6では、サービスの起動は「/etc/init.d/サービス名 stop」, 「service サービス名 stop」で起動していましたが、systemctlコマンドでは「systemctl stop サービス名」となります
systemctlコマンドだと起動しても何も表示されませんので、psコマンドなどで起動しているか確認したほうが良さそうです
$ sudo systemctl stop httpd.service $ ps -ef | grep httpd | grep -v grep
サービス再起動
CentOS 6では、サービスの起動は「/etc/init.d/サービス名 restart」, 「service サービス名 restart」で起動していましたが、systemctlコマンドでは「systemctl restart サービス名」となります
systemctlコマンドだと起動しても何も表示されませんので、psコマンドなどで起動しているか確認したほうが良さそうです
$ sudo systemctl restart httpd $ ps -ef|grep httpd root 1152 1 0 14:05 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND apache 2756 1152 0 15:12 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND apache 2757 1152 0 15:12 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND apache 2758 1152 0 15:12 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND apache 2759 1152 0 15:12 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND apache 2760 1152 0 15:12 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND root 2765 2670 0 15:12 pts/0 00:00:00 grep --color=auto httpd
ディスカッション
コメント一覧
まだ、コメントがありません