Добавлен 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](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)
|
||||
|
|
|
@ -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)
|
||||
- [Oh My ZSH!](ohmyzsh.md)
|
||||
- [Asterisk](src/asterisk.md)
|
||||
- [Oh My ZSH!](src/ohmyzsh.md)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# Программирование
|
||||
|
||||
- [Работа с библиотеками](libs.md)
|
||||
- [Работа с библиотеками](src/libs.md)
|
||||
|
||||
## [Язык программирования C](c)
|
||||
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
# Язык программирования C
|
||||
|
||||
[Компиляция C](c_compilation.md)
|
||||
[Компиляция C](src/c_compilation.md)
|
|
@ -1,3 +1,3 @@
|
|||
# Язык программирования D
|
||||
|
||||
[Проект dub.json](dub.md)
|
||||
[Проект dub.json](src/dub.md)
|
Loading…
Reference in New Issue