刪除殭屍例項指令碼

2021-06-19 23:27:43 字數 1099 閱讀 1435

在我們建立例項的過程中,由於種種錯誤的操作,會產生了大量狀態為 error 或 build 的殭屍例項,經過進一步研究,發現其主要原因出現在 rabbitmq 服務,中途有很多連線都 timeout 了。這些殭屍例項建立不成功或者根本就沒有執行,只是在 nova 資料庫裡有紀錄而已,直接用 nova delete 命令無法刪除,那麼如何進行強制刪除instance呢?

首先,清理instance目錄,看看對應的哪些instance是殭屍例項,有的話直接通過# rm -rf刪除即可:

比如:instance-00000010是殭屍例項

# ls /var/lib/nova/instances/
可以看到nova檔案下先存在的例項:

_base  instance-00000010  instance-00000011

刪除例項instance-00000010:

# rm -rf /var/lib/nova/instances/instance-00000010
然後清理 nova 資料庫,你可以直接登陸資料庫後手動刪除紀錄,具體的操作方法網上有很多。不過這是常見操作,最好還是儲存成乙個指令碼,便於你以後再次使用資料庫。方法如下:

# nano deletevm.sh#!/bin/bashmysql -uroot << eofuse nova;delete a from nova.security_group_instance_association  as a inner join nova.instances as b on a.instance_id=b.id where b.uuid='$1';delete from nova.instance_info_caches where instance_id='$1';delete from nova.instances where uuid='$1';eof# chmod +x deletevm.sh
執行指令碼,比如刪除 id 為 efc6e9c7-4ef8-4350-9451-83bcfcafe101 的例項:

# ./deletevm.sh efc6e9c7-4ef8-4350-9451-83bcfcafe101
# nova-list
這樣你可以看到,現在你的nova中存在的例項。

殭屍程序和如何刪除殭屍程序

當乙個子程序結束後,他的父程序沒有等待他 wait waitpid 清除他的所有資源時,它就變成乙個殭屍程序。在linux系統中,在每個程序退出的時候,核心釋放該程序所有的資源,包括開啟的檔案,占用的記憶體等。但是仍然為其保留一定的資訊 包括程序號the process id,退出狀態the ter...

shell指令碼 指令碼學習例項

直接顯示的指令碼內容,執行結果,不再列出。1.判斷某一目錄是否存在,若不存在則新建此目錄 5 bin bash read p 請輸入乙個目錄 dirif d dir then echo 目錄已存在 else echo 目錄不存在,正在建立 mkdir p dir echo 建立完成 fi2.通過指令...

Linux shell 指令碼例項

1.寫乙個指令碼,利用迴圈計算10的階乘 2.寫乙個指令碼,執行後,列印一行提示 please input a number 要求使用者輸入數值,然後列印出該數值,然後再次要求使用者輸入數值。直到使用者輸入 end 停止 執行指令碼方法 nuhup sh route.sh 注意前面要用上nohup,...