Java 从bash管理Linux中的进程/服务

Java 从bash管理Linux中的进程/服务,java,linux,bash,Java,Linux,Bash,我正在为大学做一个小项目,比较3个不同的Linux发行版和它们的资源命中率,以及它们如何处理进程。我建议使用BASH而不是C++或Perl,因为教授认为这会导致资源的较低的命中率。p> 我主要来自Java背景,当然熟悉线程。我想知道的是,是否可以为进程分配一定的总内存,并为每个进程分配一部分内存和一个优先级?我想模拟内存不足的情况,以及在内存不足时终止或终止非紧急进程的需要,并将这一切作为我的bash对话框中的选项之一进行控制。 我知道这一切在Java中都是可能的,因为几个月前我使用produc

我正在为大学做一个小项目,比较3个不同的Linux发行版和它们的资源命中率,以及它们如何处理进程。我建议使用BASH而不是C++或Perl,因为教授认为这会导致资源的较低的命中率。p> 我主要来自Java背景,当然熟悉线程。我想知道的是,是否可以为进程分配一定的总内存,并为每个进程分配一部分内存和一个优先级?我想模拟内存不足的情况,以及在内存不足时终止或终止非紧急进程的需要,并将这一切作为我的bash对话框中的选项之一进行控制。 我知道这一切在Java中都是可能的,因为几个月前我使用producer-consumer示例做了一个项目。是否可以在Linux服务器中执行此操作?我根本不使用GUI或桌面版本,因为项目禁止使用


我还想知道我是否可以在iostat的同时运行某个压力测试,并比较它如何处理压力和非压力结果。也可以在bash中控制它吗

bash使您能够从命令行自动执行任何可以自己执行的操作,在命令行中,您可以访问分配内存、检查内存使用情况等所需的所有工具。。。因此,bash也是如此——此外,当使用更高级的语言时,它们只是通过自己的库调用相同的底层OS管理的数据结构。。。您可能会惊喜地发现命令行实用程序是多么强大。。。可以考虑使用bash快速构建方法的原型,如果发现需要复杂的数据处理,可能需要在需要时调用简单的c二进制文件

。。。。下面是关于gnuplot简介的简短介绍

how to plot data from a file containing one vertical column of numbers :

from command line :

    gnuplot

    then at gnuplot> prompt :   plot "some-file-with-single-vertical-column"

to plot 3D data - IE.  frequency + offset + difference :


    To view tsv files (3 columns :  freq offset difference) use

    terminal :

    gnuplot

    splot 'freq_offset_diff_20130711_211554_pass_01.tsv' using 1:2:3 with points palette pointsize 3 pointtype 7

我想你要找的是cgroup。您可以为整个cgroup进程组设置最大内存(以字节为单位)

另一个简单的方法是让一个新用户将所有进程都放在用户身上,并在用户身上设置一个ulimit

 luser hard as ?

conf

还有什么值得强调或收集统计数据的吗?我已经在做CPU、内存、vmstat和iostat的测试了。我假设过程控制将在一个单独的bash脚本中编写,然后在主对话框中作为函数引用?请记住,在执行压力测试时,您可能希望包括多个服务器-hunters和huntedhow?我将运行vmware Player中的每一台。当运行入界和出界网络连接压力测试时,最好有两台服务器—一台是搜索到的目标,从不同的服务器生成出界连接并接收入界连接,以分离出目标上的资源使用情况。谢谢,我将尝试这样做。您知道如何在不下载大型软件包的情况下将vmstat etc和vmstat上的压力测试结果输出为图形吗?cgroups选项是否可以用bash编写,然后作为对话框中的函数调用?我可以为cgroup中的每个进程/服务赋予优先级或重要性吗?cgget、cgset和cgcreate可用于设置和获取cgroup参数,这是一个很好的指南,它似乎与您已经编写了一些conf文件(例如temperature.conf)的做法相同。如下所示:/etc/init/proj_temperature.conf/etc/init/proj_oxygen.conf/etc/init/proj_湿度.conf输出/tmp/temperature.level/tmp/oxygen.level/tmp/湿度.level脚本/tmp/temperature.sh/tmp/oxygen.sh/tmp/湿度.sh这些可以在cgroup内按优先级/内存进行控制,还是完全分开?cgexec将在控制组中启动一个进程。您可以从那里控制整个组的内存/优先级,以及修改单个进程的优先级。好的,谢谢。我还试图强调vmstat等,但我希望有一个压力测试同时运行到vmstat,我将在bash中编写。你知道这个的语法吗?当我运行一个正常的压力测试时,它只运行一秒钟,而我想要一个像vmstat 150这样的输出,但是有一个峰值。许多发行版都有基本的操作系统内核,所以比较一下ubuntu和debian,如果这是真的,就会发现它们之间的差异相对较小。。。供参考