06 2012 档案
java执行带重定向或管道的shell命令的问题
摘要:以前没用过java执行shell命令,以为也是像C那样便捷,用个system函数就可以搞定。今天一用才发现不是那么回事。java里面执行shell命令有两种方法:1.使用ProcessBuilderProcessBuilder pb=new ProcessBuilder(cmd);pb.start();2.使用RuntimeRuntime.getRuntime().exec(cmd)但是这个两种方法都有个问题,执行诸如:ps -ef | grep -v grep 带有管道或重定向的命令就会出错。我们都知道使用以上两种方法执行命令时,如果带有参数就要把命令分割成数组或者List传入,不然会被当成 阅读全文
posted @ 2012-06-28 17:52 lisperl 阅读(11064) 评论(0) 推荐(3) 编辑
利用shell脚本监控LXC应用容器内的应用
摘要:利用lxc-execute启动应用容器后,可以利用lxc自带的lxc-info获取容器的状态,lxc-monitor监控容器状态的变化,但是不能获取容器内应用的信息。这点可以通过结合Linux ps命令和lxc自带的lxc-ps和lxc-cgroup命令来实现。1.首先我们可以通过lxc-ps获取特定容器内需要监控的应用的pid号#usage:get_pid container_name app_namefunction get_pid{ local pid=`lxc-ps -n $1 |grep $2 | awk '{print $2}'|grep -v PID` echo 阅读全文
posted @ 2012-06-28 10:53 lisperl 阅读(3067) 评论(0) 推荐(1) 编辑
如何解除LXC容器和应用生命周期之间的耦合
摘要:使用LXC应用容器时,容器的生命周期和应用是耦合在一起的。即:Lxc-execute-nfoobar此时用容器foo启动了一个应用bar,在容器启动时,应用就启动了。Lxc-stop-nfoo此时停止了容器foo,根据lxc的规则,容器的应用也就停止了。 通过以上两个例子可以看出应用和容器是紧耦合在一起的,要生一起生,要死一起死。可能有很多人会不明白LXC怎么会有这么蛋疼的规定。其实深入了解一下LXC的实现就清楚了,LXC是基于cgroups实现的,LXC的应用容器并不是一个真正意义上完整的系统,只是一个进程组,然后系统以这个进程组进行资源和安全管理。因此,进程在,容器才在,不能只有容器... 阅读全文
posted @ 2012-06-20 17:17 lisperl 阅读(2593) 评论(0) 推荐(0) 编辑
LXC(Linux Containers)的不足和改进
摘要:在之前的博文中(参见Linux Cgroups详解系列),作者对LXC 的实现做了分析,这里再例举一下LXC 的一些不足和作者个人的一些改进意见。(一) 缺少对磁盘配额(disk quota)的支持LXC 依赖于Linux Cgroups 实现资源管理的功能,而Cgroups 并没有相应的子系统来提供限制磁盘空间的功能。对于服务器整合而言,限制磁盘空间是个很有用的功能,可以限制单一应用占有过多的磁盘空间,从而导致其他应用失败。LXC 现在的解决办法是在创建容器的时候利用LVM 创建一个LVM 分区来限制容器可使用的磁盘空间。这个办法依赖于LVM,用户在使用LXC 时需要做额外的工具。最好的解决 阅读全文
posted @ 2012-06-15 18:26 lisperl 阅读(7473) 评论(5) 推荐(0) 编辑

点击右上角即可分享
微信分享提示