web-dev-qa-db-ja.com

FreeBSDで実行レベルを取得する方法

Linuxでは、そのように実行レベルを得ることができます。

if [ "$(runlevel | sed 's/.* //')" = 6 ]; then
  echo "A reboot is in progress"
fi
 _

そして実行レベル0はシャットダウン用です。無料BSDでどのように同じことをすることができますか?

1
kamaci

RunLevelはsysvinit(Systemv-Style Init)に固有の概念です。 Linuxで使用されているINITの他の範囲(たとえば、systemd)も、RunLevelの概念を持っていません。

RunLevelの概念もBSDスタイルのinitには存在しません。したがって、FreeBSDのラングレベルはありません。

2
Mikhail Kupchik

Mikhailは、Linux/Sysvスタイルの実行レベルがないという点で正しいですが、シングルとマルチユーザーモードがあります。これはロータリーですが、私がシングルまたはマルチユーザーにプログラム的にあなたがプログラム的にあなたがいるかどうかを知ることを私が発見した最善の方法です:

FreeBSDが単一のユーザーモードにあるとき、 "Adjkerntz"はまだ起動されていません(そして、あなたもドロップダウンした場合は殺されます)、それをテストすることができます。

if ! ps -auxww | grep -v "grep" | grep "adjkerntz" > /dev/null; then
   echo "Single user";
else
   echo "Multi-user";
fi
 _

この作品を9.xと10.xで確認しました。おそらくFreeBSDの他のすべてのバージョン。

0
Adam Strohl

の存在をテストする

/var/run/nologin
 _

ファイルは同じ情報を提供します。

0
kamaci