十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
单实例程序即程序只有一个执行程序,ruby编写的脚本程序怎么做到这个功能呢?
成都创新互联公司是一家业务范围包括IDC托管业务,网页空间、主机租用、主机托管,四川、重庆、广东电信服务器租用,川西大数据中心,成都网通服务器托管,成都服务器租用,业务范围遍及中国大陆、港澳台以及欧美等多个国家及地区的互联网数据服务公司。我是这样来解决这样这个问题的,每次脚本跑起来后是通过系统查询进程是否有多个相同的运行的实例,如果有则杀掉除第一个启动的所有进程。具体代码如下:
#保留最早启动的一个交换服务
def self.keep_first_switcher_srv()
#查找系统,找到所有的交换服务
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
核心代码:
wmic process where "CommandLine like '%switcher_master%' and Caption like '%ruby%'" get CreationDate,Handle
运行这条命令来查询:程序的启动命令含有ruby和swithcer_master的命令的进程,返回进程的创建时间和进程id句柄号。
创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。