Здравствуйте. Есть приложение позволяющее запускать несколько своих копий и работать с ними одновременно (1С). Как можно запретить запуск копий приложения на какое-то время после открытия первой?
Пример: запускает врач 1С и перед появление заставки проходит секунд 7-10 (в это время врач не понимает, запускается программа или нет). Врачи часто не дожидаются и запускают еще одну копию программы (или больше). Может можно добавить кулдаун меду запусками копий или есть другие решения?
Запрет запуска копии приложения
Как правильно задавать вопросы Правильно сформулированный вопрос и его грамотное оформление способствует высокой вероятности получения достаточно содержательного и по существу ответа. Общая рекомендация по составлению тем: 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 независимо от того, имеет ли это отношение к вопросу или нет. Так же не забываем об общих правилах Как пример вот
-
Автор темы - Сообщения: 185
- Зарегистрирован: 22 ноя 2019, 19:12
- Благодарил (а): 101 раз
- Поблагодарили: 9 раз
- Контактная информация:
Запрет запуска копии приложения
Решение
Но вообще, есть грязный но простой способ, примерно так:
Будет задержка в 120 секунд, до возможности запустить повторно.
Фокус здесь в том, что sleep - тоже программа. И проверяем мы здесь именно ее работу. Т.е. если уже ждем - другого не запускать.
А "грязный" этот вариант потому, что не проверяем чей именно sleep запущен. Нашего скрипта, или в системе еще что-то "спит".
Перейти к ответу ➙
Если многократный запуск это нормальное и допустимое поведение программы, и более того, штатно используемое - то в таком случае, IMHO, "случайный" двойной запуск уже не ваша проблема. Если объяснений что нужно подождать и не кликать дуром много раз не понимают - пусть закрывают лишнее потом.
Но вообще, есть грязный но простой способ, примерно так:
Код: Выделить всё
pidof sleep || <single-start-program> &
pidof sleep || sleep 120
Фокус здесь в том, что sleep - тоже программа. И проверяем мы здесь именно ее работу. Т.е. если уже ждем - другого не запускать.

А "грязный" этот вариант потому, что не проверяем чей именно sleep запущен. Нашего скрипта, или в системе еще что-то "спит".
Перейти к ответу ➙
-
- Сообщения: 4187
- Зарегистрирован: 14 фев 2018, 00:51
- Решено: 36
- Откуда: Краснодар
- Благодарил (а): 1735 раз
- Поблагодарили: 1275 раз
- Контактная информация:
Запрет запуска копии приложения
пинать 1С на их поддержке что б раньше отрисовывали... 7-10с это недопустимо даже на самом тормознутом железе...
-
- Сообщения: 4859
- Зарегистрирован: 21 июн 2017, 18:09
- Решено: 111
- Благодарил (а): 53 раза
- Поблагодарили: 2177 раз
- Контактная информация:
Запрет запуска копии приложения
Только временный запрет - дикий скриптовый геморрой.
Просто не давать запускать копии - гораздо проще. Подменяем ярлык запуска приложения напрямую ярлыком на простой скрипт, где будет примерно такая конструкция:
pidof <single-start-program> || <single-start-program> &
Такой скрипт не даст запустить второй экземпляр. Символ & в конце нужен чтобы не зависеть от терминала в котором запущен скрипт (чтоб программа не закрывалась после закрытия терминала).
-
Автор темы - Сообщения: 185
- Зарегистрирован: 22 ноя 2019, 19:12
- Благодарил (а): 101 раз
- Поблагодарили: 9 раз
- Контактная информация:
Запрет запуска копии приложения
Хорошее предложение кстати, нужно написать в техподдержку

Спасибо за скрипт, но проблема в том, что они иногда МОГУТ намеренно запускать копии 1С для работы. Но подумаю, может и вправду этого будет достаточно.slant писал(а): ↑08 ноя 2022, 19:30Только временный запрет - дикий скриптовый геморрой.
Просто не давать запускать копии - гораздо проще. Подменяем ярлык запуска приложения напрямую ярлыком на простой скрипт, где будет примерно такая конструкция:
pidof <single-start-program> || <single-start-program> &
Такой скрипт не даст запустить второй экземпляр. Символ & в конце нужен чтобы не зависеть от терминала в котором запущен скрипт (чтоб программа не закрывалась после закрытия терминала).
-
- Сообщения: 4859
- Зарегистрирован: 21 июн 2017, 18:09
- Решено: 111
- Благодарил (а): 53 раза
- Поблагодарили: 2177 раз
- Контактная информация:
Запрет запуска копии приложения
Если многократный запуск это нормальное и допустимое поведение программы, и более того, штатно используемое - то в таком случае, IMHO, "случайный" двойной запуск уже не ваша проблема. Если объяснений что нужно подождать и не кликать дуром много раз не понимают - пусть закрывают лишнее потом.
Но вообще, есть грязный но простой способ, примерно так:
Код: Выделить всё
pidof sleep || <single-start-program> &
pidof sleep || sleep 120
Фокус здесь в том, что sleep - тоже программа. И проверяем мы здесь именно ее работу. Т.е. если уже ждем - другого не запускать.

А "грязный" этот вариант потому, что не проверяем чей именно sleep запущен. Нашего скрипта, или в системе еще что-то "спит".
-
- Сообщения: 7069
- Зарегистрирован: 27 авг 2016, 20:03
- Решено: 30
- Откуда: Voskresensk
- Благодарил (а): 1368 раз
- Поблагодарили: 734 раза
- Контактная информация:
Запрет запуска копии приложения
ogankvik, знакомая ситуация ) у меня не 1С, но тоже столкнулся. Мое решение было достаточно простым. Я позапускал программу на всех местах пока лицензии не закончились.
теперь пользователь может запустить только один раз.

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