Создание собственного демона в Linux — это задача, которая может включать несколько шагов, таких как написание самого программного кода, конфигурирование службы, настройка автозапуска и управление ей через систему инициализации. Поскольку вы работаете с Devuan, который использует `sysvinit`, я опишу, как создать демона и как его настроить.
### 1. Написание кода демона
В качестве примера мы создадим простой демон на языке Python. Этот демон будет просто записывать текущее время в лог-файл раз в минуту.
#### Пример демона на Python:
```python
#!/usr/bin/env python3
import time
import os
import sys
import daemon # библиотека, позволяющая создавать демонов
# Определим путь к лог-файлу
log_file = '/var/log/mydaemon.log'
def run():
with open(log_file, 'a') as f:
while True:
# Записываем текущее время в лог-файл
f.write(f"{time.ctime()}\n")
f.flush() # Сбрасываем буфер
time.sleep(60) # Ждём 1 минуту
if __name__ == "__main__":
with daemon.DaemonContext():
run()
```
### 2. Сохранение скрипта
Сохраните этот код в файл, например, `mydaemon.py`:
Если вывод команды `ps -p 1 -o comm=` показывает `runit`, это означает, что ваша система использует `runit` в качестве системы инициализации. `runit` — это легковесная система, которая упрощает управление службами и демонстрациями.
### Создание демона с использованием runit
Чтобы создать своего демона, следуйте этим шагам:
#### 1. Написание кода демона
Например, создадим простой демон на Python, который будет записывать текущее время в лог-файл раз в минуту.
##### Пример демона на Python
```python
#!/usr/bin/env python3
import time
import os
log_file = '/var/log/mydaemon.log'
def run():
while True:
with open(log_file, 'a') as f:
f.write(f"{time.ctime()}\n")
time.sleep(60)
if __name__ == "__main__":
run()
```
##### Сохранение скрипта
Сохраните этот код в файл, например, `mydaemon.py`:
После создания директории службы и файла `run`, ваш демон будет автоматически запущен `runit`. Чтобы проверить состояние службы, используйте:
```bash
sv status mydaemon
```
#### 4. Остановка и перезапуск демона
Чтобы остановить или перезапустить демон, используйте следующие команды:
- Остановить демон:
```bash
sudo sv down mydaemon
```
- Перезапустить демон:
```bash
sudo sv restart mydaemon
```
### Заключение
Теперь у вас есть простой демон, работающий под управлением `runit`. Вы можете настроить его под свои нужды, расширить функционал кода и регулярно проверять, работает ли он, используя команды `sv`. Если у вас возникнут дополнительные вопросы или нужно более подробное объяснение, не стесняйтесь спрашивать!