Найти тему
Шпаргалки Эникея

Запрет/ограничение запуска копий приложения на Linux Mint

Всем привет

хочу рассказать о создании "запрета" на запуск второй копии приложения на ОС Linux Mint, работает и на других debian-like ОСях.

За пример возьмем клиентское приложение Trassir, на слабых ПК запускается оно долго, кушает при наличии больше десяти камер - много, при нескольких попытках запуска кушать начинает еще больше :)

Ситуация - выключили свет, перезагрузили ПК (не суть), после включения зашли в окружение, запускаем нужную вам программу, пользователи ждать несколько секунд иногда не любят и начинают жать как не в себя на ярлык запуска, в итоге открывается десяток копий этой программы, оперативка вся моментально съедается, Zabbix орет о проблеме с рабочей станцией :)

Чтобы этого избежать - необходимо сделать запрет запуска копии процесса при уже имеющимся

По умолчанию ярлык, он же symlink на примере Trassir выглядит следующим образом

Ярлык рабочего стола Linux Mint для запуска Trassir-клиента
Ярлык рабочего стола Linux Mint для запуска Trassir-клиента

Изменяем в нем run_t1client.sh, например, на runonce.sh

Далее идем в терминал, пишем команду

sudo nano /opt/dssl/t1client/runonce.sh

без прав админа, ОСь ни создать ни изменить файл, естественно, не даст

Пишем в редакторе скрипт

#!/bin/bash
a=$(ps ax | grep "run_t1client.sh" | wc -l)
if [ "$a" == '1' ]
then
echo "test"
/opt/dssl/t1client/run_t1client.sh
fi

Готово

Пробуем запустить несколько копий многочисленными кликами, процессы должны появиться только для одной копии Trassir

ps ax | grep "t1client.sh"
Запущенные процессы Trassir'а
Запущенные процессы Trassir'а

Всем спасибо за внимание