SystemDを使用してCentOS 7でランレベルを変更する

SystemDを使用してCentOS 7でランレベルを変更する

CentOS 7では、httpdサービスはランレベル3と5でのみ開始されることを望み、他のランレベル(例:2と4)ではサービスを開始しないでください。

CentOS 6では、「chkconfig」コマンドを使用してこれを達成できます。 CentOS 7環境で同様のソリューションを探しています。

答え1

ランレベル3と5でHTTPDを起動し、ランレベル2と4でHTTPDを停止したいと言われたことを確認しました。これは、Init と SystemD の詳細な概要を提供する Red Hat マニュアルの URL です。

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/sect-Managing_Services_with_systemd-Targets.html

Red Hat のマニュアルには multi-user.target がランレベル 2、3、4 と同じであることが示されています。

  • ランレベル0 = poweroff.target
  • runlevel1=rescue.target
  • runlevel2 =マルチユーザー。
  • ランレベル3 = multi-user.target
  • ランレベル4 = multi-user.target
  • ランレベル5 = Graphics.target
  • ランレベル6 = restart.target

これを念頭に置いて、ランレベル2、3、4を切り替えるコマンドを使用することは意味がないようです。systemctl set-default multi-user.targetランレベル2、3、4はmulti-user.targetと同義であるためです。

systemctl cat httpdこのコマンドを使用して一部の構成情報を表示できることに注目する価値があります。あなたの質問に関して、このコマンドはmulti-user.targetに設定されたHTTPDを表示します。

# systemctl cat httpd
. . .
[Install]
WantedBy=multi-user.target

これがあなたの環境に適しているかどうかはわかりません。要件に対する考えられる解決策は、スクリプトを使用してシステムの現在の実行レベルを決定し、次にいくつかのifループを使用してターゲットに基づいてHTTPDデーモンを開始または停止することです。たとえば、スクリプトは次のようになります。

#!/bin/bash
target=`systemctl get-default`
if [ $target == "multi-user.target" ]
then
  systemctl stop httpd
else
  systemctl start httpd
fi

関連情報