Astra linux chkconfig команда не найдена
Управление системными службами чаще всего осуществляется системными администраторами, но иногда должно осуществляться и обычными пользователями. Без сомнения, замена SysV (команды service и chkconfig) на systemd (команда systemctl) вызвала достаточно неоднозначную реакцию пользователей и администраторов. В результате у обоих систем остались свои приверженцы.
На сегодняшний день подавляющее большинство дистрибутивов использует systemd для управления системными службами. По этой причине стоит уметь пользоваться командой systemctl.
Я не считаю, что каждый из пользователей может самостоятельно разобраться со всеми нюансами использования рассматриваемого инструментария. По этой причине я постараюсь объяснить все нюансы, связанные с командой systemctl, максимально простыми словами. В конце будет подведены итоги и даны советы по использованию тех или иных подкоманд.
Примечание: на man-странице systemctl первым параметром является «команда», что может смутить неискушенного пользователя. Я буду называть командой саму команду systemctl, а ее первый параметр - подкомандой. Вторым параметром команды является имя системной службы.
В качестве примера я буду использовать службу cron:
Информация о состоянии системных служб
При диагностике работы системы следует начинать с получения информации о состоянии важных системных служб. Самым простым решением данной задачи является использование подкоманды status:
окт 29 18:17:02 layla CRON[5644]: pam_unix(cron:session): session closed for user root
окт 29 18:30:01 layla CRON[7293]: pam_unix(cron:session): session opened for user root by (uid=0)
.
Разумеется, вы можете использовать другие имена системных служб, которые можно получить с помощью команды:
Команда systemctl status также весьма полезна для выяснения причин неработоспособности тех или иных системных механизмов. При диагностике систем я первым делом проверяю состояние основных системных служб с помощью systemctl. Зачем беспокоится о межсетевых экранах, SELinux/Apparmor или файлах конфигурации, если необходимая служба даже не запущена?
Что же, теперь вы знаете, как получить информацию о состоянии системной службы, такой, как cron. Но как изменить само это состояние?
Запуск и остановка системных служб
При изменении файла конфигурации той или иной запущенной системной службы, вам придется либо перезапустить саму службу, либо перезагрузить ее конфигурацию. В результате служба повторно прочитает содержимое файла конфигурации и изменит свое поведение в соответствии с ним. В прошлом для этой цели использовалась команда service:
В случае systemd для этой цели используется команда systemctl. К примеру, для перезапуска системной службы cron с помощью systemctl следует выполнить следующую команду:
На мой взгляд, данный синтаксис более очевиден. Для того, чтобы остановить или запустить системную службу, следует использовать соответствующий синтаксис и подкоманды stop и start соответственно, например:
Службы, которые не прекращают работу после использования подкоманды stop, могут быть остановлены принудительно с помощью подкоманды kill. Например, для принудительной остановки службы cron следует использовать следующую команду:
Перезагрузка конфигурации системной службы работает немного по-другому. Подкоманда reload просто сообщает системной службе о необходимости повторного чтения содержимого файла конфигурации, в отличие от команды restart, которая останавливает и снова запускает ее, в результате чего также читается обновленное содержимое файла конфигурации.
Например, если вы используете команду systemctl restart cron, планировщик будет полностью перезапущен. В то же время, при перезагрузке конфигурации ему будет отправлен соответствующий сигнал. В обоих случаях обновленное содержимое файла конфигурации будет прочитано и учтено.
Перезагрузка конфигурации осуществляется гораздо быстрее, но не все службы поддерживают ее.
Подкоманды start, stop, restart и reload оказывают влияние лишь на текущую рабочую сессию.
Активация и деактивация системных служб
Многие системные администраторы, мало знакомые с Linux, не понимают разницы между подкомандами start/stop и enable/disable. Я уже рассказывал о командах start, stop и restart в предыдущем разделе.
Подкоманды start и stop изменяют текущее состояние службы. Однако, после перезагрузки системы ее состояние будет приведено к тому, которое было установлено по умолчанию. Другими словами, если я остановлю службу cron и перезагружу компьютер, в процессе его загрузки она будет снова запущена.
В прошлом вы наверняка использовали команду chkconfig для установки уровней исполнения для запуска и остановки тех или иных служб. Например:
Эта команда активирует запуск службы cron на уровнях исполнения 3 и 5.
В случае с systemctl активация запуска служб осуществляется с помощью подкоманд enable и disable. Синтаксис соответствующих команд аналогичен синтаксису команд с подкомандами start, stop и restart.
Например, для активации запуска службы cron в процессе загрузки системы может использоваться следующая команда:
Аналогично, для деактивации запуска этой службы в процессе загрузки системы может использоваться следующая команда:
Активация и деактивация системных служб, по аналогии с их запуском и остановкой, обычно не вызывает каких-либо вопросов. Однако, вопросы появляются в случае необходимости использования обоих классов подкоманд.
Совместное использование подкоманд для активации и запуска системных служб
Некоторым системным администраторам и пользователям может показаться странным то, что подкоманда активации системной службы не запускает ее. Например, если вы установили системную программу и хотите запустить ее для тестирования работоспособности, после чего хотите активировать ее запуск в процессе загрузки системы, вам придется выполнить две команды:
Деактивация системной службы осуществляется по аналогичной схеме. Вам придется использовать подкоманду disable для деактивации запуска службы в процессе загрузки системы. Однако, в том случае, если служба уже запущена, вам придется использовать подкоманду stop для завершения ее работы.
Например, деактивация и остановка службы cron могут быть осуществлены с помощью следующих команд:
Не забывайте о том, что вы всегда можете воспользоваться подкомандой status, если не уверены в корректности выполненных действий:
Для того, чтобы убедиться в том, что запуск службы при загрузке системы активрован, вы можете воспользоваться еще одной подкомандой systemctl под названием is-enabled. Например, для проверки статуса активации службы cron следует использовать следующую команду:
Множество подкоманд и полезный механизм для получения их списка
Я рассказал о некоторых подкомандах systemctl, таких, как start, stop, restart, enable, disable, status и некоторых других. Их уже достаточно для того, чтобы запутаться! Если вы используете Fedora Workstation, то вам поможет старый друг — клавиша Tab, используемая для автозавершения команд. Попробуйте сделать следующее: введите команду systemctl и символ пробела после нее. После этого дважды нажмите клавишу Tab, в результате чего должен быть выведен полный список подкоманд команды systemctl. Не уверен, что большинство системных администраторов и пользователей знают о данном механизме.
Заключение
Как вы убедились сами, управление системными службами с помощью утилиты systemctl не представляет каких-либо сложностей. Мне кажется, что она работает более логично, чем такие утилиты, как service и chkconfig. Кроме того, использование одной команды для управления службами вместо двух гораздо удобнее.
Вам следует запомнить следующие правила:
- Для управления текущим состоянием служб следует использовать подкоманды start/stop/restart
- После модификации файлов конфигурации системных служб следует использовать подкоманды start/stop/restart/reload
- Для активации и деактивации запуска системных служб в процессе загрузки системы следует использовать подкоманды enable/disable
- В процессе диагностики системы следует использовать подкоманду status на раннем этапе
Наконец, вам не придется запоминать все подкоманды systemctl. Вы можете либо просто ввести systemctl, символ пробела и дважды нажать Tab, либо воспользоваться командой systemctl --help, если первый вариант не срабатывает.
Управление системными службами осуществляется как в процессе администрирования мощных серверов, так и в процессе администрирования домашних систем и я надеюсь, что теперь вам будет немного проще работать с командой systemctl и ее подкомандами.
В очень многих инструкциях из интернета советуется использовать команду ifconfig для настройки сети или просмотра информации о ней. Это очень давняя, но удобная утилита, которая имеет простой синтаксис и выводит информацию в простом и правильном виде.
Но когда вы попытаетесь использовать эту команду, то иногда можете получить ошибку ifconfig команда не найдена. Здесь все понятно, команда не найдена, но это довольно популярная утилита, и странно, что она не поставляется по умолчанию. В этой статье мы рассмотрим что делать если вы сталкиваетесь с такой ошибкой и почему так происходит.
Ошибка ifconfig команда не найдена
Первая причина почему вы можете получать эту ошибку, очень проста. Скорее всего, утилита установлена в вашей системе, но интерпретатор bash не может ее найти. Дело в том, что в Linux существует несколько папок для хранения исполняемых файлов. Все утилиты, которые может выполнять только суперпользователь расположены в каталоге /sbin или /usr/sbin.
Соответственно, обычному пользователю не нужно давать доступ к этим файлам, поэтому эти каталоги доступны только root, а в переменную среды PATH, из которой bash берет каталоги для поиска программ для пользователя они даже не добавлены. Проще говоря, вам достаточно только запустить программу от имени суперпользователя:
Если даже после этого вы получаете эту ошибку, то это означает, что программа таки не установлена. Дело в том, что утилита довольно давняя, и некоторым разработчикам показалось, что нужно разработать что-то более совершенное, поэтому была разработана утилита ip. Она имеет больше возможностей и лучше. Но она непривычна и имеет сложный синтаксис. Теперь команда ip используется по умолчанию во многих дистрибутивах, а ifconfig удалена.
sudo apt install net-tools
sudo dnf install net-tools
sudo yum install net-tools
sudo pacman -S net-tools
После завершения установки пакета, а это будет выполнено очень быстро, вы можете пользоваться утилитой и ошибки ifconfig command not found больше не будет. Только запускайте ее с помощью sudo. Если вы решили больше не использовать ifconfig смотрите статью про утилиту ip linux.
Выводы
Написанием данной статьи меня побудила банальная задача: отключить графическую оболочку при старте системы. Казалось бы, поменять одну цифру в /etc/inittab. Но как выяснилось, все намного сложнее. Итак, разберем по полочкам, что такое inittab и systemd, для чего они нужны и как управлять автозагрузкой приложений в linux. Как человек, который самостоятельно пытается найти ответы, пришлось прочитать не одну статью, информации на эту тему много, но понимание приходит не сразу. На русскоязычных форумах как правило развернутого ответа нет. Скажу сразу, я не системный администратор и статья больше рассчитана на людей, кто относительно недавно познакомился с linux. Кому интересна данная тема, добро пожаловать.
Это моя первая статья, если есть замечания прошу в комментарии.
Что такое inittab
По сути inittab представляет из себя файл в котором можно посмотреть/поменять уровень загрузки операционной системы в /etc/inittab. Давайте разберем его
В linux существуют 7 уровней загрузки операционной системы. В нашем случае нулевой уровень — это режим восстановления, первый — это запуск в одиночном режиме под root. 2-5 загрузка в мульти пользовательском режиме (т.е. обычный режим). Отличаются они лишь набором стартовых скриптов. 6 уровень это перезагрузка. Скрипты берутся из директорий, которые расписаны в inittab. Наша система по умолчанию загружается на 5 уровне, посмотрим что-же находится в директории /etc/init.d/rc 5:
Скрипты в этом каталоге выполняются каждый раз при старте системы. А если быть точнее это лишь символьные ссылки на сами скрипты. Первая буква означает S(start) K(kill или stop) для изменения порядка скриптов меняется цифра, т.е. запуск скриптов выполняется по возрастанию. Руками менять можно, но рекомендуется менять через «update-rc.d»
Все просто и прозрачно.
Что такое systemd
Systemd является заменой старой традиционной загрузки inittab. Был разработан чтобы обеспечить лучшую обработку зависимостей. В настоящее время systemd поставляется по умолчанию с популярными дистрибутивами linux таких как Fedora, Mandira, Arch Linux, CentOS 7, Red Hat 7.0 и на удивление для меня в Debian 8.9.
Плюсы и минусы в явном виде для меня не понятны. Интересен в первую очередь функционал. Итак разбираемся дальше. Две вещи, которые нам нужно знать:
Чтобы посмотреть уровень загрузки, введем команду:
Как правило graphical.target аналог 5 уровня, запуск системы в графическом режиме.
Чтобы посмотреть все доступные нам уровни, введем:
проведем аналогию c inittab
При старте системы linux смотрит в файл (который является ссылкой)
Таким образом чтобы загрузиться в многопользовательском режиме, нам нужно сменить ссылку или использовать systemctl (делает тоже самое)
Автозагрузка проложений
Как мы уже поняли в каталогах /etc/rc4.d/* лежат символьные ссылки на скрипты. Где цифры от 1 это уровень загрузки у inittab или systemd. Мы можем менять руками порядок запуска, убирать и добавлять. По сути systemd пробежится по всем файлам и попытается их инициализировать при старте системы. Теперь разберем управление через команды:
chkconfig — нужна для просмотра сервисов(программ). Поддерживает режим изменения для любого уровня загрузки.
update-rc.d — служит для запуска/остановки скриптов, при старте/выключении системы. Собственно через нее мы и будем менять автозапуск графической оболочки KDE(kdm). Так уж получилось, что у меня запуск окружения KDE включен для 2-5 уровней по умолчанию.
При старте системы я отключаю 2-4 уровень загрузки и проверяю что у меня стоит 3-й уровень загрузки
Перезагружаюсь и вижу приглашение консоли tty. profit
На самом деле, это чуть больше чем консоль. Мы можем переключаться между вкладками.
CTRL+ALT+(F1-F6)
Помимо просмотра служб команда chkconfig используется для добавления и удаления служб с определенных уровней запуска. Команда chkconfig также может управлять файлами конфигурации xinetd.d.
В этой статье мы расскажем о команде chkconfig и покажем несколько практических примеров.
Синтаксис и параметры команды Chkconfig
В строке ниже показан синтаксис chkconfig и его доступные параметры:
Просмотр состояния службы на уровнях выполнения
Опция chkconfig --list используется для отображения текущего состояния всех служб, отображающих запуск или остановку на соответствующих уровнях запуска.
Отображение конкретной службы с помощью команды Chkconfig
Вы можете добавить дополнительную команду к chkconfig в список определенных служб.
Чтобы просмотреть список всех служб, запущенных на уровне запуска 3, используйте следующую команду:
Включение (запуск) службы на уровнях запуска
Давайте проверим, как запустить конкретную службу на определенных уровнях запуска.
Давайте проверим, как запустить службу на нескольких уровнях с помощью одной команды.
Отключение (остановка) службы на уровнях выполнения
Вы можете остановить службу на уровне mutiple run, используя следующую команду:
Как добавить службу
Параметр --add добавляет службу в управление chkconfig. Chkconfig создает соответствующую запись (запуск или остановка), как указано значениями по умолчанию в сценарии инициализации.
Следующие команды добавляют службы iptables и они автоматически запустятся на уровнях 2, 3, 4 и 5:
Команда добавит только ту службу, которая присутствует в системе. Если служба отсутствует, вам следует сначала установить пакет, а затем добавить его в список автозагрузки системы.
Команда Chkconfig в Linux с примерами
Как удалить службу
Заключение
Из стати вы узнали что параметр --add выполненный в chkconfig, создает файл символической ссылки, чтобы службы можно было запускать и останавливать в соответствующем каталоге rc (/etc/rc3.d). А параметр --del выполненный chkconfig, удаляет ту же символическую ссылку из каталога.
По мере того как современные дистрибутивы Linux перемещаются из SysV в systemd, команда chkconfig заменяется командами systemctl. Я надеюсь, вам понравилась статья.
Читайте также: