В Linux мы можем получить уровень запуска следующим образом:
if [ "$(runlevel | sed 's/.* //')" = 6 ]; then
echo "A reboot is in progress"
fi
и уровень запуска 0 для выключения. Как я могу сделать то же самое для Free BSD?
Уровень запуска - это концепция, специфичная для sysvinit
(init-стиль в стиле SystemV). Другие разновидности init, используемые в Linux (например, systemd
), также не имеют понятия уровня запуска.
Понятие уровня запуска также не существует в init в стиле BSD, следовательно, в FreeBSD нет уровней запуска.
Михаил прав в том, что нет уровней запуска в стиле 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.
Проверка наличия
/var/run/nologin
файл дает ту же информацию.