Implemented commandline params, updated README.md, added cpanfile, fixed couple of bugs
- Use Proc::Find instead of ps utility - Use builtin kill instead of commandline utility - Use setpriority instead of renice utility - Implemented config parameter loopdelay - Implemented config parameter cmddelay - Implemented commandline parameter --config - Added --help parameter - Implemented commandline parameter --pidfile - Added cpanfile and bootstrap.sh to bootstrap this daemon - Optimized algo - do not send signals to already "signaled" processes, do not ionice already ioniced pids
This commit is contained in:
55
README.md
55
README.md
@@ -10,33 +10,59 @@
|
||||
|
||||
## Как это установить и заставить работать?
|
||||
|
||||
Для установки нам понадобятся пакеты с перлом и перловым модулем JSON::XS из текущего дистрибутива линукса, например, их
|
||||
можно уставить командами:
|
||||
### Установка reniced
|
||||
|
||||
Для вуишфт-образных дистрибутивов
|
||||
Для установки и работы нам понадобятся модули, которые скорее всего с дистрибутивом не идут. Чтобы их установить нам
|
||||
понадобятся собственно perl и его пакетный менеджер cpanm.
|
||||
|
||||
Для debian-образных дистрибутивов эти пакеты можно установить командами:
|
||||
|
||||
```bash
|
||||
apt-get install perl perl-json-xs
|
||||
dnf install perl perl-App-cpanminus
|
||||
```
|
||||
|
||||
Для наследников redhat-а
|
||||
Для rhel-образых - командами:
|
||||
|
||||
```bash
|
||||
dnf install perl perl-json-xs
|
||||
apt install perl cpanminus
|
||||
```
|
||||
|
||||
Для всех остальных нужен будет perl, cpanm и переменная окружения PERL5LIB. За подробностями - добро пожаловать в гугл.
|
||||
И далее приложение надо будет "забутстрапить". С этим есть небольшая тонкость - если у вас определена переменная
|
||||
PERL5LIBS, то при запуске модули будут браться из системы и каталогов, обозначенных в ней, если не определена, то только
|
||||
из системы. Соответственно, предполагается, что у нас запуск команды reniced будет в окружении, в котором есть всё
|
||||
необходимое (в cpanfile есть список всех нужных для работы библиотек), либо в системе, где все нужные либы уже
|
||||
установлены штатным пакетным менеджером.
|
||||
|
||||
Как заставить это работать?
|
||||
Бутстрапится приложение командой
|
||||
|
||||
Вначале надо скопировать конфиг из **config_example.json** в **~/.reniced.json** и далее подправить все необходимые
|
||||
значения в нём.
|
||||
```
|
||||
bash bootstrap.sh
|
||||
```
|
||||
|
||||
При этом все либы складываются в ~/perl5. У рута это будет /root/perl5, у обычного пользователя - ${HOME}/perl5. (при
|
||||
этом $HOME обычно это /home/имя_пользователя). В случае MacOS пути будут иные: /var/root/perl5 для рута и ${HOME}/perl5
|
||||
(при этом $HOME обычно это /Users/имя_пользователя). Собственно, тот каталог с либами далее можно переместить куда надо.
|
||||
|
||||
### Работа с reniced
|
||||
|
||||
Вначале надо скопировать конфиг из **example_config.json** в **~/.reniced.json**, если запуск планируется от
|
||||
пользователя (что не рекомендуется см. Caveats ниже), либо скопировать конфиг из **example_config.json** в
|
||||
**/etc/reniced.json**, если запуск будет от суперпользователя (рута, uid=0) и далее подправить все необходимые значения
|
||||
в нём.
|
||||
|
||||
После настройки списка процессов и приоритетов их работы, можно запускать сервис как unix daemon или как обычный
|
||||
процесс. Второй вариант нужен для запуска сервиса через systemd.
|
||||
|
||||
Если reniced планируется запускать от рута (uid=0), то конфиг будет находиться не в **~/.reniced.json**, а в
|
||||
**/etc/reniced.json**.
|
||||
#### Аргументы командной строки
|
||||
|
||||
**--help** - краткая справка по запуску команды
|
||||
|
||||
**--pidfile** - указать положение pidfile, в который будет записываться process id (для рута по-умолчанию
|
||||
/run/reniced.pid, для обычного пользователя по-умолчанию /tmp/reniced-UID.pid)
|
||||
|
||||
**--config** - указать положение файла с конфигом (для рута - /etc/reniced.json, для обычного
|
||||
пользователя - ~/.reniced.json)
|
||||
|
||||
|
||||
## Caveats
|
||||
|
||||
@@ -50,7 +76,8 @@ dnf install perl perl-json-xs
|
||||
sudo reniced
|
||||
```
|
||||
|
||||
в каталоге с reniced. Кроме того, под MacOS конфиг всегда ищется в ~/.reniced.json
|
||||
в каталоге с reniced. Кроме того, под MacOS конфиг всегда ищется в ~/.reniced.json, а при таком запуске нужно, чтобы
|
||||
была выставлена переменная окружения PERL5LIB, например в ~/.zprofile.
|
||||
|
||||
В линуксах такой проблемы пока нет (но возможно будет, когда придут "атомарные" обДНОвления).
|
||||
|
||||
@@ -68,5 +95,5 @@ sudo reniced
|
||||
При запуске reniced от обычного пользователя, niceness процесса может идти только в плюс. То есть, процесс с nice=11 не
|
||||
получится сделать с nice=9, например (без перезапуска процесса, конечно). Зато от суперпользователя такое работает.
|
||||
|
||||
## Special thans
|
||||
## Special thanks
|
||||
Авторам VK Teams. Без их мессенджера, с его "недостатками", не было бы этого костыля.
|
||||
|
||||
Reference in New Issue
Block a user