Добавлен systemd

This commit is contained in:
Alexander 2022-05-22 17:07:14 +03:00
parent ead4ceb626
commit b9a6c76532
23 changed files with 138 additions and 15 deletions

View File

@ -1,3 +1,3 @@
# Базы данных
- [PostgreSQL](postgresql.md)
- [PostgreSQL](src/postgresql.md)

View File

@ -1,10 +1,11 @@
# Linux
- [Установка софта в Linux](soft.md)
- [Права доступа](chmod.md)
- [Настройка сети](network.md)
- [Настройка SSH](ssh.md)
- [Копирование файлов на удалённый сервер через SSH](scp.md)
- [Анализ трафика (tcpdump)](tcpdump.md)
- [Мониторинга и анализа трафика (ngrep)](ngrep.md)
- [Работа с архивами](archives.md)
- [Установка софта в Linux](src/soft.md)
- [Права доступа](src/chmod.md)
- [Настройка сети](src/network.md)
- [Настройка SSH](src/ssh.md)
- [Копирование файлов на удалённый сервер через SSH](src/scp.md)
- [Анализ трафика (tcpdump)](src/tcpdump.md)
- [Мониторинга и анализа трафика (ngrep)](src/ngrep.md)
- [Работа с архивами](src/archives.md)
- [systemd](src/systemd.md)

122
linux/src/systemd.md Normal file
View File

@ -0,0 +1,122 @@
# systemd
## Пользовательский сервис с доступом к X11
Для запуска пользовательских сервисов необходимо импортировать данные в переменную `XDG_RUNTIME_DIR`. Это можно сделать путём определения переменной в файле, который передаётся на запуск `startx` или `xinit` (например файл `~/.xinitrc`)::
```sh
export XDG_RUNTIME_DIR=/run/user/$(id -u)
```
### Пример пользовательского сервиса
Структура сервиса в качестве примера:
```sh
.
├── bin
│ └── myprogram
└── etc
└── systemd
└── user
└── myprogram.service
```
где `bin/myprogram` - исполняемый файл самой программы, которую необходимо запускать в качестве пользовательского сервиса `systemd`. Файл `/etc/systemd/user/myprogram.service`:
```sh
[Unit]
Description=myprogram
PartOf=graphical-session.target
[Service]
ExecStart=/bin/myprogram
[Install]
WantedBy=default.target
```
Для автозагрузки сервиса необходимо создать ссылку на сам сервис в домашней директории `~/.config/systemd/user/graphical-session.target.wants/myprogram.service`:
```sh
.config
└── systemd
└── user
└── graphical-session.target.wants
└── myprogram.service -> /etc/systemd/user/myprogram.service
```
Делается это командой:
```sh
systemctl --user enable myprogram.service
```
Так как сервис запускается **после** входа пользователя в систему, то необходимо в файл, который передаётся на запуск `startx` или `xinit` добавить строку запсука `myprogram.service` (например, в файл `~/.xinitrc`):
```sh
systemctl --user start myprogram.service
```
После чего сервис `myprogram.service` будет автоматически запускаться после входа пользователя в систему.
### Пример пользовательского сервиса с использованием "якоря" `xsession.target`
Структура сервиса в качестве примера:
```sh
.
├── bin
│ └── myprogram
└── etc
└── systemd
└── user
├── myprogram.service
└── xsession.target
```
где `bin/myprogram` - исполняемый файл самой программы, которую необходимо запускать в качестве пользовательского сервиса `systemd`. Файл `/etc/systemd/user/myprogram.service`:
```sh
[Unit]
Description=myprogram
PartOf=graphical-session.target
[Service]
ExecStart=/bin/myprogram
[Install]
WantedBy=xsession.target
```
Файл `/etc/systemd/user/xsession.target` используемый в качестве "якоря", на который будут цепляться остальные сервисы:
```sh
[Unit]
Description=X session managed by systemd
BindsTo=graphical-session.target
```
Для автозагрузки сервиса необходимо создать ссылку на сам сервис в домашней директории `~/.config/systemd/user/graphical-session.target.wants/myprogram.service`:
```sh
.config
└── systemd
└── user
└── graphical-session.target.wants
└── myprogram.service -> /etc/systemd/user/myprogram.service
```
Делается это командой:
```sh
systemctl --user enable myprogram.service
```
Так как сервис запускается **после** входа пользователя в систему, то необходимо в файл, который передаётся на запуск `startx` или `xinit` добавить строку запсука "якоря" `xsession.target` (например, в файл `~/.xinitrc`):
```sh
systemctl --no-block --user start xsession.target
```
После чего сервис `myprogram.service` будет автоматически запускаться после входа пользователя в систему.

View File

@ -1,3 +1,3 @@
# Мануалы
## [initrd (Initial RAM Disk)](initrd.md)
## [initrd (Initial RAM Disk)](src/initrd.md)

View File

@ -1,4 +1,4 @@
# Программы
- [Asterisk](asterisk.md)
- [Oh My ZSH!](ohmyzsh.md)
- [Asterisk](src/asterisk.md)
- [Oh My ZSH!](src/ohmyzsh.md)

View File

@ -1,6 +1,6 @@
# Программирование
- [Работа с библиотеками](libs.md)
- [Работа с библиотеками](src/libs.md)
## [Язык программирования C](c)

View File

@ -1,3 +1,3 @@
# Язык программирования C
[Компиляция C](c_compilation.md)
[Компиляция C](src/c_compilation.md)

View File

@ -1,3 +1,3 @@
# Язык программирования D
[Проект dub.json](dub.md)
[Проект dub.json](src/dub.md)