systemctl get-default
はuser-defined.target
を返します。systemctl isolate multi-user.target
を使用してmulti-user.target
に切り替えます。user-defined.taret
で実行してはならず、multi-user
で実行する必要がある一連のサービスが実行されていることがわかります。これは、私がmulti-user.target
を使用していることを意味します。systemctl get-default
は常にuser-defined.target
を返します。問題は、サービスを調べたり並べ替えたりせずに、isolate
を使用した後、multi-user.target
で実行していることをどのようにして知ることができるかです。
実行中のターゲットまたはisolate
で使用された最後のターゲットをクエリするsystemdコマンドはありません。
systemd
には、古いシステムとの互換性のためにrunlevel
というコマンドが付属しています。これは、現在の「ランレベル」を防ぎます。コンセプトは時代遅れですが、man runlevel
、特定の実行レベルは特定のsystemdターゲットにマップされます。このコマンドは、標準ターゲットが使用されている場合に役立つことがあります。レガシーランレベルにマッピングされていないカスタムターゲットが使用された場合は、役に立ちません。
回避策の詳細については、[ https://www.centos.org/forums/viewtopic.php?t=54347](CentOS フォーラム)をご覧ください。
前述の回答と同様に、以下を使用できます。
systemctl list-units --type target | egrep "eme|res|gra|mul" | head -1
結果として得られるのは、現在のターゲットです。
上記の4つの文字列のいずれかが名前に含まれているユニットをインストールした場合、その前に^
文字を追加できます-egrep "^eme|^res|^gra|^mul"
Systemdでは、一度に複数のアクティブなターゲットが存在する場合があります。
現在アクティブなすべてのターゲットのリストを検査するには:
systemctl list-units --type target --state active
特定のターゲット(例:user-defined.target
)がアクティブかどうか:
systemctl is-active user-defined.target
これが私があなたの現在のターゲットモードを見つけるために同行できる最良の方法です。
緊急-コマンドを実行した後systemctl list-units --type target緊急ターゲット
レスキュー-コマンドの実行後systemctl list-units --type targetrescue target
マルチユーザー-コマンドを実行した後systemctl list-units --type targetマルチユーザーターゲット
残念ながら、これらの回答はどれも現在どのランレベルがアクティブであるかを示していません。彼らはすべて私の場合、両方のmulti-user.target
およびgraphical.target
はロード済み/アクティブです。これまでのところ、runlevel
コマンドのみが現在のランレベルを示しています。
runlevel | awk '{print $2}'