'Singleton'应用程序 – 或者让用户在这个时候只启动一个程序的一个实例

我正在运行几个Linux桌面; 主要是为了孩子们(是的,试图在早期教他们正确的操作系统)(运行Ubuntu 10.10,Gnome)

问题是,他们发现通过启动数以千计的firefox实例,使他们的工作站(实际上,老512Mb奔腾4)非常有趣。

我正在寻找一种方法来限制他们启动特定应用程序的“N”个实例。 还没有想出如何。 想到一个监控守护进程,但是我认为这样做太饿了。

任何想法的脚本/伎俩来实现这一点?

注意:我可能有1-2个级别的用户(孩子,和更多的长大的孩子),所以我也要限制每个用户; 像user1:3firefox,user2:2firefox实例。

这似乎是你的问题是,太多的程序能够启动,而不是有太多的一个应用程序或另一个。 为此,您可能希望查看更好的进程限制/限制,以便它们不会以这种方式崩溃机器。

至于预防与特定的应用程序:当处理孩子,我要做的是看做快捷方式打开当前正在运行的应用程序的实例,如果有一个已经打开,并打开另一个只有如果没有。 或者,如果已经有一个正在运行的实例,就不要工作。

您可以使用命令行中的命令而不是目前正在执行的任何命令。 我不能推荐一个特定的命令语法,如果已经有一个实例在运行,那么这个命令语法就不起作用,但是这就是我开始寻找的地方。

考虑在你的limits.conf文件中增加一些进程数限制,通常位于/etc/security/limits.conf

以下片段将限制users组的成员为200个进程:

 @users hard nproc 200 

这不会让您将用户限制在某个特定的应用程序的数量,但它将大大的保护机器的其他部分免受一些恶意用户的攻击。

您可能还需要考虑使用地址空间限制,而不是严格的过程计数限制。

以下将强制限制512000KB(500MB):

 @users hard as 512000 

对于Firefox来说,具体来说,问题的一部分是,无论你做什么快捷方式,孩子可以通过点击CTRL-N得到几十个和几十个Firefox的窗口。 另外,据我所知(Debian stable的iceweasel)当你尝试运行firefox的第二个副本而-no-remote命令行选项时,它会向现有的firefox发送一条消息来打开一个新窗口,然后退出,所以通常只有一个firefox进程(每个用户)。 你可以试试这个窗口限制器的插件 ,这可能会帮助你,因为你使用它的目的,而不是试图阻止愤怒的评论者popup窗口。

对于一般的其他应用程序,大多数docker捕获docker本身内的应用程序图标,然后单击docker中的应用程序再次返回到现有的窗口(请参阅OSX,或Windows 7如何固定到任务栏的行为)。 如果你点击右键,大多数人仍然可以打开应用程序的多个副本,但这可能会骗过足够小的孩子一段时间。 你只需要find一个以这种方式工作的应用程序启动器,并使用Gnome,这可能需要一些试验和错误。