Управление сервисами в Linux. Команда systemctl
Сервисы или службы — это программы, которые работают в системе Linux в фоновом режиме. Обычно они запускаются при загрузке системы. Большинство сервисов необходимы для полноценной работы системы, то есть они являются своего рода кирпичиками, из которых строится работающая система.
При запуске системы загружается целый ряд сервисов, которые включены для автозагрузки. Сервисы работают пока система запущена, и выгружаются при выключении системы.
Чаще всего в Linux дистрибутивах для инициализации сервисов используется демон Systemd. К Systemd-дистрибутивам относятся Ubuntu, Debian, Linux Mint, Fedora, openSUSE, Solus и другие.
Есть дистрибутивы, которые не используют Systemd. Вместо Systemd могут использоваться такие системы инициализации, как Upstart, SysV.
В качестве примеров сервисов можно привести: веб-сервер Apache, Network Manager, файрвол Ufw и другие.
Для управления сервисами (Systemd) используется утилита systemctl . Ниже мы рассмотрим основные команды данной утилиты.
Список сервисов
Чтобы просмотреть список всех сервисов можно воспользоваться командой:
Данная команда пробегает по алфавитному списку всех доступных сервисов и выполняет для них команду status.
В выводе команды используются следующие обозначения:
- [ + ] — запущенный сервис.
- [ — ] — остановленный сервис.
- [ ? ] — для данного сервиса отсутствует команда status.
Запуск сервиса
Для запуска сервиса используется команда systemctl start имя_сервиса
Останов сервиса
Для остановки сервиса используется команда systemctl stop имя_сервиса
Перезапуск сервиса
Перезапуск сервиса выполняется командой systemctl restart имя_сервиса
sudo systemctl restart ufw
Обычно перезапуск конкретного сервиса требуется, когда были изменены настройки данного сервиса.
Некоторые сервисы поддерживают «мягкую» перезагрузку. В этом случае сервис считывает связанные с ним файлы конфигурации, но не прерывает процесс сервиса. Для выполнения «мягкой» перезагрузки используется команда systemctl reload имя_сервиса . Не все сервисы поддерживают «мягкую» перезагрузку. Если она не поддерживается, то появится сообщение вида: Failed to reload ufw.service: Job type reload is not applicable for unit ufw.service.
Автозагрузка сервисов
Чтобы сервис стартовал (загружался) при запуске системы, его нужно включить в список автозагрузки. Для этого используется команда systemctl enable имя_сервиса
sudo systemctl enable ufw Synchronizing state of ufw.service with SysV service script with /lib/systemd/systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install enable ufw
Чтобы включить сервис в автозапуск и сразу же запустить используется команда:
Чтобы удалить сервис из автозагрузки, используется команда systemctl disable имя_сервиса
sudo systemctl disable ufw
Статус сервиса
Для вывода информации (статуса) сервиса используется команда systemctl status имя_сервиса
Чтобы проверить, запущен ли в данный момент сервис, используется команда systemctl is-active имя_сервиса
systemctl is-active ufw acive
Чтобы проверить, включен ли сервис для автозапуска при загрузке системы, используется команда systemctl is-enabled имя_сервиса
systemctl is-enabled ufw enabled
Заключение
Мы рассмотрели наиболее часто используемые команды утилиты systemctl. Полный список команд и опций утилиты systemctl можно получить, выполнив:
Где в системах с systemd лежат файлы конфигурации сети и прочих сервисов?
В дистрибутиве который у меня стоял раньше, сеть настраивалась в файле /etc/network/interfaces, всё понятно и красиво, как во всех гайдах в интернете. Но вот сейчас я поставил минт, и смотрю что в этом файле кроме локальной петли ничего нету. Я сразу подумал, как же тогда интерфейс при запуске сам поднялся то, если там не прописано чтобы он поднимался, там вообще ничего нет. Потом ещё заметил ненормальные названия интерфейсов и пошел гуглить. Из нагугленного понял, что виновник всей этой вакханалии и хаоса некий systemd, который кроме своей задачи запуска системы позволяет себе ещё что-то делать. Ну полез я в папку /etc/systemd/network, а там пусто. Ну и где мне теперь искать куда настройки сети прописаны? Гугл выдет только стандартный путь как в нормальных дистрибутивах.
mint на базе убунты а там netplan.io запилили вроде
cast intelfx
И как уже им пользоваться? Зачем они вообще всё это делают? Всё же прекрасно работало.
Ну и что это? Это же управление нетворк менеджером из терминала. Я и так в нетворк менеджере могу всё прописать. Мне надо знать где сами конфиги лежат в минте этом, и зачем оно так работает.
как во всех гайдах в интернете
Потом ещё заметил ненормальные названия интерфейсов
некий systemd
Ну и где мне теперь искать куда настройки сети прописаны?
Читай в документации к своему дистрибутиву. В линуксе есть несколько способов настройки сети — interfaces, network manager, networkd etc. Настраиваются они все по разному.
0 Имеем подсказку nmcli c s
1 Читаем man nmcli , в секции SEE ALSO находим nm-settings(5)
2 Внимательно читаем nm-settings(5)
3 Обращаем внимание в секции FILES на
/etc/NetworkManager/system-connections or distro plugin-specific location
Так зачем мне нетворк менеджер? Я и так могу в нетворк менеджере натыкать. Мне нужен сам файл где эти все настройки прописаны.
Ну так в минте этом только и в графической оболочке через нетворк менеджер и настраивается. Понаделали мусора какого-то, что теперь ничего не работает, ну за-то стильно, модно, молодёжно.
Имена интерфейсов можно назначать через правила udev привязав конкретное имя к конкретному MAC.
при этом само имя может быть любым.
torvn77 ★★★★★ ( 17.08.19 17:18:54 MSK )
Последнее исправление: torvn77 17.08.19 17:19:38 MSK (всего исправлений: 1)
Покажи вывод ls -l /etc/NetworkManager/system-connections/
А можно сделать чтобы всё по человечески было как раньше?
Ну так в минте этом только и в графической оболочке через нетворк менеджер и настраивается
Графические оболочки есть не только у NM. Но, если в минте действительно по умолчанию используется NM (что может быть не так, так как в первом же коммите сказали про убунтовский netplan), то и смотри в его файлы настройки, в чём проблема.
$ nmcli c s NAME UUID TYPE DEVICE Проводное соединение 1 2c02c64d-be77-36c5-af64-03aeec35aa65 ethernet ens5f5 Автоматически настроить TOTOLINK_N301RT f8091326-4f64-44c7-b513-94dcfbaf5576 wifi --
ls -l /etc/NetworkManager/system-connections/ итого 8 -rw------- 1 root root 402 авг 11 11:16 'Автоматически настроить TOTOLINK_N301RT' -rw------- 1 root root 369 авг 11 15:23 'Проводное соединение 1'
# cat /etc/NetworkManager/system-connections/Проводное\ соединение\ 1 [connection] id=Проводное соединение 1 uuid=2c02c64d-be77-36c5-af64-03aeec35aa65 type=ethernet autoconnect-priority=-999 permissions= timestamp=1565526199 [ethernet] cloned-mac-address=F4:6D:04:89:02:25 mac-address=F4:6D:04:89:02:25 mac-address-blacklist= [ipv4] dns-search= method=auto [ipv6] addr-gen-mode=stable-privacy dns-search= method=auto
Ну и что это такое? Файл с настройками интерфейса не так должен выглядеть.