systemctlでApache の「graceful」を使用する
CentOS 7.x , CentOS 8.xでは、サービスを起動する場合は、systemctlコマンドになっています。この状態でApacheのgracefulを使用すると「Unknown operation 'graceful’.」のようなエラーになりました
$ sudo systemctl graceful httpd Unknown operation 'graceful'.
「graceful」のオプションは、設定ファイルを読み直すときにプロセスをKillしないで、子プロセスを接続を待ってから設定ファイルを読み直しますので、接続しているクライアントがいる場合は旧に接続断にならないので、アクセスが多いサーバーで設定ファイルを読み直す場合は、「graceful」を利用した方がいい場合は多いです。
systemctl配下では、「graceful」を使用する場合は、どのようにすればいいかというと「systemctl reload httpd」でいいかと思います。
/usr/lib/systemd/system/httpd.service のファイルで確認すると、reloadは「ExecReload=/usr/sbin/httpd $OPTIONS -k graceful」となっているので、reloadでいいかと思われます
$ cat /usr/lib/systemd/system/httpd.service [Unit] Description=The Apache HTTP Server After=network.target remote-fs.target nss-lookup.target Documentation=man:httpd(8) Documentation=man:apachectl(8) [Service] Type=notify EnvironmentFile=/etc/sysconfig/httpd ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND ExecReload=/usr/sbin/httpd $OPTIONS -k graceful ExecStop=/bin/kill -WINCH ${MAINPID} # We want systemd to give httpd some time to finish gracefully, but still want # it to kill httpd after TimeoutStopSec if something went wrong during the # graceful stop. Normally, Systemd sends SIGTERM signal right after the # ExecStop, which would kill httpd. We are sending useless SIGCONT here to give # httpd time to finish. KillSignal=SIGCONT PrivateTmp=true [Install] WantedBy=multi-user.target
また、systemctlを使用しないで「apachectl 」のコマンドを使用して「apachectl graceful」とすれば、CentOS 6.xと同じように「graceful」を利用できます
$ sudo apachectl graceful
CentOS 6.xの「/etc/init.d/httpd」では、「$apachectl $@」となっているので、「apachectl graceful」といいかと思います
$ cat /etc/init.d/httpd graceful|help|configtest|fullstatus) $apachectl $@ RETVAL=$? ;;
ディスカッション
コメント一覧
まだ、コメントがありません