Добавлен systemd
This commit is contained in:
parent
ead4ceb626
commit
b9a6c76532
|
@ -1,3 +1,3 @@
|
||||||
# Базы данных
|
# Базы данных
|
||||||
|
|
||||||
- [PostgreSQL](postgresql.md)
|
- [PostgreSQL](src/postgresql.md)
|
|
@ -1,10 +1,11 @@
|
||||||
# Linux
|
# Linux
|
||||||
|
|
||||||
- [Установка софта в Linux](soft.md)
|
- [Установка софта в Linux](src/soft.md)
|
||||||
- [Права доступа](chmod.md)
|
- [Права доступа](src/chmod.md)
|
||||||
- [Настройка сети](network.md)
|
- [Настройка сети](src/network.md)
|
||||||
- [Настройка SSH](ssh.md)
|
- [Настройка SSH](src/ssh.md)
|
||||||
- [Копирование файлов на удалённый сервер через SSH](scp.md)
|
- [Копирование файлов на удалённый сервер через SSH](src/scp.md)
|
||||||
- [Анализ трафика (tcpdump)](tcpdump.md)
|
- [Анализ трафика (tcpdump)](src/tcpdump.md)
|
||||||
- [Мониторинга и анализа трафика (ngrep)](ngrep.md)
|
- [Мониторинга и анализа трафика (ngrep)](src/ngrep.md)
|
||||||
- [Работа с архивами](archives.md)
|
- [Работа с архивами](src/archives.md)
|
||||||
|
- [systemd](src/systemd.md)
|
||||||
|
|
|
@ -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` будет автоматически запускаться после входа пользователя в систему.
|
|
@ -1,3 +1,3 @@
|
||||||
# Мануалы
|
# Мануалы
|
||||||
|
|
||||||
## [initrd (Initial RAM Disk)](initrd.md)
|
## [initrd (Initial RAM Disk)](src/initrd.md)
|
|
@ -1,4 +1,4 @@
|
||||||
# Программы
|
# Программы
|
||||||
|
|
||||||
- [Asterisk](asterisk.md)
|
- [Asterisk](src/asterisk.md)
|
||||||
- [Oh My ZSH!](ohmyzsh.md)
|
- [Oh My ZSH!](src/ohmyzsh.md)
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Программирование
|
# Программирование
|
||||||
|
|
||||||
- [Работа с библиотеками](libs.md)
|
- [Работа с библиотеками](src/libs.md)
|
||||||
|
|
||||||
## [Язык программирования C](c)
|
## [Язык программирования C](c)
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
# Язык программирования C
|
# Язык программирования C
|
||||||
|
|
||||||
[Компиляция C](c_compilation.md)
|
[Компиляция C](src/c_compilation.md)
|
|
@ -1,3 +1,3 @@
|
||||||
# Язык программирования D
|
# Язык программирования D
|
||||||
|
|
||||||
[Проект dub.json](dub.md)
|
[Проект dub.json](src/dub.md)
|
Loading…
Reference in New Issue