ruby 单实例程序

单实例程序即程序只有一个执行程序,ruby编写的脚本程序怎么做到这个功能呢?

 

我是这样来解决这样这个问题的,每次脚本跑起来后是通过系统查询进程是否有多个相同的运行的实例,如果有则杀掉除第一个启动的所有进程。具体代码如下:

 

        #保留最早启动的一个交换服务
        def self.keep_first_switcher_srv()
            #查找系统,找到所有的交换服务,启动ruby的命令是switcher_master
            info = IO.popen(%q{wmic process where "CommandLine like '%switcher_master%' and Caption like '%ruby%'" get CreationDate,Handle})
            data_info = []
            info.readlines.each do|line|
                if(line =~ /\d/)
                    data_info << line.strip.split
                end
            end
            #如果找到多个交换服务,则杀掉所有后启动的交换服务,保留最先启动的交换服务
            if(data_info.size > 1)
                min = data_info.map{|item| item[0]}.min
                data_info.each do|line|
                    if(!line.include?(min))
                        `taskkill /f /pid #{line[1]} /t`
                    end
                end
            end
        end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值