Я использую несколько рабочих столов Linux; в основном для детей (да, пытаюсь научить их правильной ОС на ранней стадии) (работает Ubuntu 10.10, Gnome)
Проблема в том, что они сочли очень забавным создавать свои рабочие станции (на самом деле, старый 512-мегабайтный Pentium 4), запустив тысячи экземпляров firefox.
Я ищу способ ограничить их запуском экземпляров «N» определенного приложения. Пока не понял как. Мысль о демоне мониторинга, но я думаю, что это было бы слишком голодным по ресурсам.
Любая идея сценария / трюка для достижения этого?
Примечание: у меня может быть 1-2 уровня пользователей (дети и более взрослые дети), поэтому я также должен ограничить для каждого пользователя; что-то вроде экземпляров user1: 3firefox, user2: 2firefox.
Попробуйте добавить некоторые ограничения на количество процессов в свой limits.conf
файл, обычно расположенный в /etc/security/limits.conf
.
Следующий фрагмент ограничивает членов users
группа до 200 процессов:
@users hard nproc 200
Это не позволит вам ограничить пользователей определенным количеством какого-либо конкретного приложения, но будет иметь большое значение для защиты остальной части машины от нескольких злонамеренных пользователей.
Вы также можете рассмотреть возможность использования ограничений адресного пространства вместо строгих ограничений на количество процессов.
Следующее устанавливает жесткое ограничение в 512000 КБ (500 МБ):
@users hard as 512000
В частности, для firefox часть проблемы заключается в том, что независимо от того, что вы делаете с ярлыком, ребенок может получить десятки и десятки окон Firefox, нажав ctrl-N. Кроме того, насколько мне известно (iceweasel Debian stable), когда вы пытаетесь запустить вторую копию firefox без -no-remote
параметр командной строки, он отправляет сообщение в существующий firefox, чтобы открыть новое окно, а затем закрывается, поэтому обычно существует только один процесс firefox (на пользователя). Вы можете попробовать это оконный ограничитель аддон, который может вам помочь, поскольку вы используете его по прямому назначению, а не пытаетесь блокировать всплывающие окна, как сердитые рецензенты.
Для других приложений в целом большинство док-станций захватывают значок приложения внутри самой док-станции, и щелчок по приложению в док-станции снова возвращает вас к существующему окну (см. OSX или поведение Windows 7 для приложений, закрепленных на панели задач). Большинство из них все еще может открыть несколько копий приложения, если щелкнуть правой кнопкой мыши, но это может на время ввести в заблуждение достаточно маленьких детей. Вам просто нужно найти док-станцию с программой запуска приложений, которая работает таким образом и работает с Gnome, что, вероятно, потребует небольших проб и ошибок.
Похоже, ваша проблема в том, что может быть запущено слишком много программ, а не в том, что слишком много того или иного приложения. Для этого вам может потребоваться более эффективное ограничение / дросселирование процессов, чтобы они не могли вывести машину из строя таким образом.
Что касается предотвращения с помощью конкретных приложений: когда я имею дело с детьми, я бы хотел сделать ярлыки, которые открывают текущий запущенный экземпляр приложения, если он уже открыт, и открывает другой, только если его нет. Или просто не работать, если уже есть работающий экземпляр.
Вы можете создавать ярлыки, которые используют команду из командной строки вместо того, что они делают в данный момент. Я не могу рекомендовать конкретный синтаксис команды, который просто не работает, если уже запущен экземпляр, но я бы начал искать именно здесь.