您好,登錄后才能下訂單哦!
單實例程序即程序只有一個執行程序,ruby編寫的腳本程序怎么做到這個功能呢?
我是這樣來解決這樣這個問題的,每次腳本跑起來后是通過系統查詢進程是否有多個相同的運行的實例,如果有則殺掉除第一個啟動的所有進程。具體代碼如下:
#保留最早啟動的一個交換服務
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句柄號。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。