Запрет запуска копии приложения

Как правильно задавать вопросы Правильно сформулированный вопрос и его грамотное оформление способствует высокой вероятности получения достаточно содержательного и по существу ответа. Общая рекомендация по составлению тем: 1. Для начала воспользуйтесь поиском форума. 2. Укажите версию ОС вместе с разрядностью. Пример: LM 19.3 x64, LM Sarah x32 3. DE. Если вопрос касается двух, то через запятую. (xfce, KDE, cinnamon, mate) 4. Какое железо. (достаточно вывод inxi -Fxz в спойлере (как пользоваться спойлером смотрим здесь)) или же дать ссылку на hw-probe 5. Суть. Желательно с выводом консоли, логами. 6. Скрин. Просьба указывать 2, 3 и 4 независимо от того, имеет ли это отношение к вопросу или нет. Так же не забываем об общих правилах Как пример вот
no avatar

Автор темы
ogankvik
Сообщения: 185
Зарегистрирован: 22 ноя 2019, 19:12
Благодарил (а): 101 раз
Поблагодарили: 9 раз
Контактная информация:

Запрет запуска копии приложения

#1

08 ноя 2022, 15:52

Здравствуйте. Есть приложение позволяющее запускать несколько своих копий и работать с ними одновременно (1С). Как можно запретить запуск копий приложения на какое-то время после открытия первой?
Пример: запускает врач 1С и перед появление заставки проходит секунд 7-10 (в это время врач не понимает, запускается программа или нет). Врачи часто не дожидаются и запускают еще одну копию программы (или больше). Может можно добавить кулдаун меду запусками копий или есть другие решения?

Решение slant » 08 ноя 2022, 22:59
ogankvik писал(а):
08 ноя 2022, 21:54
МОГУТ намеренно
Если многократный запуск это нормальное и допустимое поведение программы, и более того, штатно используемое - то в таком случае, IMHO, "случайный" двойной запуск уже не ваша проблема. Если объяснений что нужно подождать и не кликать дуром много раз не понимают - пусть закрывают лишнее потом.

Но вообще, есть грязный но простой способ, примерно так:

Код: Выделить всё

pidof sleep || <single-start-program> &
pidof sleep || sleep 120
Будет задержка в 120 секунд, до возможности запустить повторно.

Фокус здесь в том, что sleep - тоже программа. И проверяем мы здесь именно ее работу. Т.е. если уже ждем - другого не запускать. :)
А "грязный" этот вариант потому, что не проверяем чей именно sleep запущен. Нашего скрипта, или в системе еще что-то "спит".

Перейти к ответу ➙

Аватара пользователя

rogoznik
Сообщения: 10438
Зарегистрирован: 27 июн 2017, 13:36
Решено: 135
Откуда: Нижний Тагил
Благодарил (а): 792 раза
Поблагодарили: 2051 раз
Контактная информация:

Запрет запуска копии приложения

#2

08 ноя 2022, 15:59

ogankvik писал(а):
08 ноя 2022, 15:52
есть другие решения?
Бить врача по голове каждый раз когда он это делает
ИзображениеИзображение

Аватара пользователя

Chocobo
Сообщения: 10067
Зарегистрирован: 27 авг 2016, 22:57
Решено: 216
Откуда: НН
Благодарил (а): 845 раз
Поблагодарили: 3042 раза
Контактная информация:

Запрет запуска копии приложения

#3

08 ноя 2022, 16:43

Что-нибудь там в фоне стартует, можно вкрутить условную конструкцию на наличие этих процессов.
Изображение
   
Изображение

Аватара пользователя

WWolf
Сообщения: 4187
Зарегистрирован: 14 фев 2018, 00:51
Решено: 36
Откуда: Краснодар
Благодарил (а): 1735 раз
Поблагодарили: 1275 раз
Контактная информация:

Запрет запуска копии приложения

#4

08 ноя 2022, 18:25

ogankvik писал(а):
08 ноя 2022, 15:52
запускает врач 1С и перед появление заставки проходит секунд 7-10
пинать 1С на их поддержке что б раньше отрисовывали... 7-10с это недопустимо даже на самом тормознутом железе...

Аватара пользователя

slant
Сообщения: 4859
Зарегистрирован: 21 июн 2017, 18:09
Решено: 111
Благодарил (а): 53 раза
Поблагодарили: 2177 раз
Контактная информация:

Запрет запуска копии приложения

#5

08 ноя 2022, 19:30

ogankvik писал(а):
08 ноя 2022, 15:52
Как можно запретить запуск копий приложения на какое-то время после открытия первой?
Только временный запрет - дикий скриптовый геморрой.

Просто не давать запускать копии - гораздо проще. Подменяем ярлык запуска приложения напрямую ярлыком на простой скрипт, где будет примерно такая конструкция:

pidof <single-start-program> || <single-start-program> &

Такой скрипт не даст запустить второй экземпляр. Символ & в конце нужен чтобы не зависеть от терминала в котором запущен скрипт (чтоб программа не закрывалась после закрытия терминала).

no avatar

Автор темы
ogankvik
Сообщения: 185
Зарегистрирован: 22 ноя 2019, 19:12
Благодарил (а): 101 раз
Поблагодарили: 9 раз
Контактная информация:

Запрет запуска копии приложения

#6

08 ноя 2022, 21:54

WWolf писал(а):
08 ноя 2022, 18:25
ogankvik писал(а):
08 ноя 2022, 15:52
запускает врач 1С и перед появление заставки проходит секунд 7-10
пинать 1С на их поддержке что б раньше отрисовывали... 7-10с это недопустимо даже на самом тормознутом железе...
Хорошее предложение кстати, нужно написать в техподдержку :). Но что-то сомневаюсь.. Нам на деревенские ПК AltLinux сертифицированный ФСТЭК закупили (дороже винды получилось) и знаешь что? На нем нельзя выписывать больничные листы, там просто не устанавливается компонент для 1С. Создали специальную группу для решение проблемы, второй месяц решения нет..


slant писал(а):
08 ноя 2022, 19:30
ogankvik писал(а):
08 ноя 2022, 15:52
Как можно запретить запуск копий приложения на какое-то время после открытия первой?
Только временный запрет - дикий скриптовый геморрой.

Просто не давать запускать копии - гораздо проще. Подменяем ярлык запуска приложения напрямую ярлыком на простой скрипт, где будет примерно такая конструкция:

pidof <single-start-program> || <single-start-program> &

Такой скрипт не даст запустить второй экземпляр. Символ & в конце нужен чтобы не зависеть от терминала в котором запущен скрипт (чтоб программа не закрывалась после закрытия терминала).
Спасибо за скрипт, но проблема в том, что они иногда МОГУТ намеренно запускать копии 1С для работы. Но подумаю, может и вправду этого будет достаточно.

Аватара пользователя

slant
Сообщения: 4859
Зарегистрирован: 21 июн 2017, 18:09
Решено: 111
Благодарил (а): 53 раза
Поблагодарили: 2177 раз
Контактная информация:

Запрет запуска копии приложения

#7

08 ноя 2022, 22:59

ogankvik писал(а):
08 ноя 2022, 21:54
МОГУТ намеренно
Если многократный запуск это нормальное и допустимое поведение программы, и более того, штатно используемое - то в таком случае, IMHO, "случайный" двойной запуск уже не ваша проблема. Если объяснений что нужно подождать и не кликать дуром много раз не понимают - пусть закрывают лишнее потом.

Но вообще, есть грязный но простой способ, примерно так:

Код: Выделить всё

pidof sleep || <single-start-program> &
pidof sleep || sleep 120
Будет задержка в 120 секунд, до возможности запустить повторно.

Фокус здесь в том, что sleep - тоже программа. И проверяем мы здесь именно ее работу. Т.е. если уже ждем - другого не запускать. :)
А "грязный" этот вариант потому, что не проверяем чей именно sleep запущен. Нашего скрипта, или в системе еще что-то "спит".

Аватара пользователя

Dja
Сообщения: 7069
Зарегистрирован: 27 авг 2016, 20:03
Решено: 30
Откуда: Voskresensk
Благодарил (а): 1368 раз
Поблагодарили: 734 раза
Контактная информация:

Запрет запуска копии приложения

#8

09 ноя 2022, 15:28

ogankvik, знакомая ситуация ) у меня не 1С, но тоже столкнулся. Мое решение было достаточно простым. Я позапускал программу на всех местах пока лицензии не закончились. :) теперь пользователь может запустить только один раз.

Ответить

Вернуться в «Параметры и оптимизация»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя