Всем привет
хочу рассказать о создании "запрета" на запуск второй копии приложения на ОС Linux Mint, работает и на других debian-like ОСях.
За пример возьмем клиентское приложение Trassir, на слабых ПК запускается оно долго, кушает при наличии больше десяти камер - много, при нескольких попытках запуска кушать начинает еще больше :)
Ситуация - выключили свет, перезагрузили ПК (не суть), после включения зашли в окружение, запускаем нужную вам программу, пользователи ждать несколько секунд иногда не любят и начинают жать как не в себя на ярлык запуска, в итоге открывается десяток копий этой программы, оперативка вся моментально съедается, Zabbix орет о проблеме с рабочей станцией :)
Чтобы этого избежать - необходимо сделать запрет запуска копии процесса при уже имеющимся
По умолчанию ярлык, он же symlink на примере 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"
Всем спасибо за внимание