Здравствуйте. Есть приложение позволяющее запускать несколько своих копий и работать с ними одновременно (1С). Как можно запретить запуск копий приложения на какое-то время после открытия первой?
Пример: запускает врач 1С и перед появление заставки проходит секунд 7-10 (в это время врач не понимает, запускается программа или нет). Врачи часто не дожидаются и запускают еще одну копию программы (или больше). Может можно добавить кулдаун меду запусками копий или есть другие решения?
Запрет запуска копии приложения
Правила форума
Как правильно задавать вопросы Правильно сформулированный вопрос и его грамотное оформление способствует высокой вероятности получения достаточно содержательного и по существу ответа. Общая рекомендация по составлению тем: 1. Для начала воспользуйтесь поиском форума. 2. Укажите версию ОС вместе с разрядностью. Пример: LM 19.3 x64, LM Sarah x32 3. DE. Если вопрос касается двух, то через запятую. (xfce, KDE, cinnamon, mate) 4. Какое железо. (достаточно вывод
Как правильно задавать вопросы Правильно сформулированный вопрос и его грамотное оформление способствует высокой вероятности получения достаточно содержательного и по существу ответа. Общая рекомендация по составлению тем: 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С, но тоже столкнулся. Мое решение было достаточно простым. Я позапускал программу на всех местах пока лицензии не закончились.
теперь пользователь может запустить только один раз.
