1

В Linux мы можем получить уровень запуска следующим образом:

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

и уровень запуска 0 для выключения. Как я могу сделать то же самое для Free BSD?

3 ответа3

2

Уровень запуска - это концепция, специфичная для sysvinit (init-стиль в стиле SystemV). Другие разновидности init, используемые в Linux (например, systemd), также не имеют понятия уровня запуска.

Понятие уровня запуска также не существует в init в стиле BSD, следовательно, в FreeBSD нет уровней запуска.

0

Михаил прав в том, что нет уровней запуска в стиле 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

Проверка наличия

/var/run/nologin

файл дает ту же информацию.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .