- Где в системах с systemd лежат файлы конфигурации сети и прочих сервисов?
- Примеры управления службами в Linux с помощью systemctl
- Концепция управления сервисами
- Важные файлы единиц и их описание
- Где хранятся файлы блоков?
- Примеры
- Управление службами Systemd с помощью systemctl
- Список служб
- Показать статус службы
- Еще несколько примеров команд:
- Запуск службы
- Остановка службы
- Перезапуск и перезагрузка службы
- Включение и отключение службы
- Where do I put my systemd service? [duplicate]
- 1 Answer 1
Где в системах с 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
Ну и что это такое? Файл с настройками интерфейса не так должен выглядеть.
Примеры управления службами в Linux с помощью systemctl
Все основные дистрибутивы Linux, такие как Ubuntu, Fedora и т.д., сегодня используют систему systemd init для управления и контроля различных сервисов во время работы системы. Для управления сервисами(демонами) systemd правильнее использовать утилиту systemctl.
Концепция управления сервисами
Systemd – это система init и менеджер сервисов современных Linux-систем. Система init – это первый процесс, который запускается при включении системы и продолжает работать до ее выключения.
Основная цель systemd как системы init – инициализация различных компонентов системы сразу после загрузки ядра Linux. Кроме того, когда система запущена, она также управляет различными службами и демонами, такими как демон ssh, сетевой менеджер и т.д.
Systemd работает на основе файлов блоков. Существуют различные типы юнит-файлов в зависимости от их назначения и ресурсов. Например, службы имеют файлы с расширениями .service , а файлы устройств имеют расширения .device . Для управления файлами блоков используется команда systemctl.
Важные файлы единиц и их описание
Название | Расширение | Описание |
Service unit | .service | Системная служба |
Target unit | .target | Группа systemd. |
Automount unit | .automount | Точка автоматического монтирования файловой системы. |
Device unit | .device | Файл устройства, распознаваемый ядром. |
Mount unit | .mount | Точка монтирования файловой системы. |
Path unit | .path | Файл или каталог в файловой системе. |
Scope unit | .scope | Созданный извне процесс. |
Slice unit | .slice | Группа иерархически организованных единиц, управляющих системными процессами. |
Snapshot unit | .snapshot | Сохраненное состояние менеджера systemd. |
Socket unit | .socket | Сокет межпроцессного взаимодействия. |
Swap unit | .swap | Устройство подкачки или файл подкачки. |
Timer unit | .timer | Таймер systemd. |
.
Где хранятся файлы блоков?
В идеальном случае в системе Linux файлы блоков хранятся в двух местах. Файлы, созданные во время выполнения и загрузки, хранятся в /run/systemd/system/ . Файлы блоков, которые вы создаете вручную (например, командой systemctl enable ), хранятся в /etc/systemd/system/ .
Путь к /etc/systemd/system/ имеет приоритет над файлами блоков времени выполнения, находящимися в /run/systemd/system/ .
Есть еще один путь, где systemd хранит системную копию файлов служебных блоков – /lib/systemd/system .
Примеры
Управление службами Systemd с помощью systemctl
Сначала рассмотрим, как можно получить список служб, проверить их состояние и т.д. Это необходимо, если вы хотите понять состояние вашей системы в целях исследования.
Чтобы получить список всех активных модулей systemd, вы можете использовать следующую команду.
Эта команда дает большой вывод с нижеприведенными заголовками. Прокрутите с помощью клавиш со стрелками (вверх, вниз, влево и вправо), чтобы просмотреть весь вывод.
- UNIT – Имя подразделения systemd
- Load – Отражает, разобрал ли systemd конфигурационный файл устройства и загружен ли он в память
- ACTIVE – Состояние устройства (высокоуровневый статус).
- SUB – Состояние устройства (низкоуровневый статус)
- DESCRIPTION – Описание устройства.
Например, значение ACTIVE может быть активным, а уровень SUB может быть различным, например, запущен, прослушивается, мертв и активен.
systemctl list-units --all --state=inactive
Список служб
Чтобы перечислить все устройства типа service, используйте следующую команду.
systemctl list-units --type=service
Вы можете комбинировать дополнительные параметры. Например, если вы хотите узнать запущенные службы, используйте следующую команду.
systemctl list-units --type=service --state=running
Другие комбинации значений state , которые вы можете использовать:
- active
- inactive
- running
- dead
- exited
- plugged
- tentative
- listening
- waiting
Дополнительно, вы можете перечислить все файлы единиц с помощью следующих команд.
Управление файлами устройств – это отдельная тема.
Показать статус службы
Чтобы узнать статус службы, используйте below command. For this guide, Я использовал службу NetworkManager , которая управляет сетевым управлением системы. Вы можете заменить NetworkManager на собственное имя службы. Все следующие команды требуют привилегии sudo. Если вы не знаете имя службы, выполните приведенные выше команды для отображения всех служб, а затем отфильтруйте их с помощью команды grep .
systemctl status NetworkManager.service
Обратите внимание, что вы можете опустить .service в конце имени службы. Systemd достаточно умна, чтобы понять команду!
В приведенном выше примере видно, что вся информация представлена в команде. В ней также есть значение CGroup для идентификации групп пользователей, что необходимо в серверной среде.
Еще несколько примеров команд:
systemctl is-active NetworkManager.service
systemctl is-enabled NetworkManager.service
systemctl is-failed NetworkManager.service
Запуск службы
Запустить службу systemd очень просто. Выполните приведенную ниже команду, указав start и имя службы. Команда запустит службу.
sudo systemctl start NetworkManager.service
Остановка службы
Используя параметр stop, вы можете остановить службу. Например:
sudo systemctl stop NetworkManager.service
Будьте осторожны при остановке службы. Убедитесь, что вы знаете, что делаете.
Перезапуск и перезагрузка службы
Systemd предоставляет параметры для настройки службы таким образом, чтобы она могла перезапускаться или перезагружаться без перезапуска. Параметр restart перезапускает службы, а reload перечитывает конфигурационные файлы
sudo systemctl restart NetworkManager.service
sudo systemctl reload NetworkManager.service
Включение и отключение службы
Если вы создали новую службу или установили приложения, работающие через службы, запуск их с помощью команды start не включит их снова при следующей загрузке. Поэтому, если вы хотите, чтобы systemd запускала службу при загрузке системы, вам нужно использовать команду enable. То же самое верно и для отключения, когда вы хотите отключить службу во время загрузки.
sudo systemctl enable NetworkManager.service
Команда enable создает симлинк из /etc/systemd/system в целевые места.
Чтобы отключить службу, используйте следующую команду.
sudo systemctl disable NetworkManager.service
Службы systemd и связанные с ними команды также имеют множество дополнительных опций. Systemd является надежным и важным компонентом современных систем Linux. Надеюсь, это руководство поможет вам при необходимости устранить неполадки на вашем рабочем столе или серверах в Linux. Существует множество дополнительных возможностей, которые предоставляет systemd – таких как целевые файлы, изменение файлов блоков обслуживания и др. – о которых я расскажу в следующих статьях. Все статьи помечены тегом systemd для удобства просмотра.
Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.
Where do I put my systemd service? [duplicate]
I was originally putting my service in /lib/systemd/system, and it seems a bunch of other services are in that directory as well. However, it’s supposed to be in /etc/systemd/system?? This source never talks about the third option: Where do I put my systemd unit file on Arch Linux? Also, this tutorial seems to put it in that directory. http://www.raspberrypi-spy.co.uk/2015/10/how-to-autorun-a-python-script-on-boot-using-systemd/ Please help clarify for me. Enabling my unit is leading to an error message: «Failed to enable unit: Invalid argument» I hypothesize because the directory is wrong. (I am using Arch Linux)
1 Answer 1
I use Systemd services to launch «kiosk»-style Pi (running CentOS) systems. Systemd pulls from a few configuration directories, but generally you should put Systemd services in /etc/systemd/system/
There are, of course, some requirements of what must be contained in the service file, but as long as it’s in that directory, a sudo systemctl enable foo.service enables that service. If you put your services in that directory and are still encountering errors, check your service file. It should contain at least:
[Unit] Description=Sample Script Startup [Service] Type=idle ExecStart=/valid/path/to/an/executable/file [Install] WantedBy=multi-user.target
The Type and WantedBy attributes may vary, depending on what you’re trying to achieve, so read the docs!