沒解決
https://github.com/portainer/portainer/issues/1961
dmesg簡介
dmesg’命令顯示linux內核的環形緩沖區信息,我們可以從中獲得諸如系統架構、cpu、掛載的硬件,RAM等多個運行級別的大量的系統信息。當計算機啟動時,系統內核(操作系統的核心部分)將會被加載到內存中。在加載的過程中會顯示很多的信息,在這些信息中我們可以看到內核檢測硬件設備。
列出加載到內核中的所有驅動
我們可以使用如‘more’。 ‘tail’, ‘less ’或者‘grep’文字處理工具來處理‘dmesg’命令的輸出。由於dmesg日志的輸出不適合在一頁中完全顯示,因此我們使用管道(pipe)將其輸出送到more或者less命令單頁顯示。
dmesg | more dmesg | less
列出所有被檢測到的硬件
dmesg | grep sda
注解 ‘sda’表示第一塊 SATA硬盤,‘sdb’表示第二塊SATA硬盤。若想查看IDE硬盤搜索‘hda’或‘hdb’關鍵詞。
只輸出dmesg命令的前20行日志
dmesg | head -20
只輸出dmesg命令最后20行日志
在‘dmesg’命令后跟隨‘tail’命令(‘ dmesg | tail -20’)來輸出‘dmesg’命令的最后20行日志,當你插入可移動設備時它是非常有用的。
dmesg | tail -20
搜索包含特定字符串的被檢測到的硬件
由於‘dmesg’命令的輸出實在太長了,在其中搜索某個特定的字符串是非常困難的。因此,有必要過濾出一些包含‘usb’ ‘dma’ ‘tty’ ‘memory’等字符串的日志行。grep 命令 的‘-i’選項表示忽略大小寫。
dmesg | grep -i usb dmesg | grep -i dma dmesg | grep -i tty dmesg | grep -i memory
我們可以使用如下命令來清空dmesg的日志。該命令會清空dmesg環形緩沖區中的日志。但是你依然可以查看存儲在‘/var/log/dmesg’文件中的日志。你連接任何的設備都會產生dmesg日志輸出。
dmesg -c
實時監控dmesg日志輸出
在某些發行版中可以使用命令‘tail -f /var/log/dmesg’來實時監控dmesg的日志輸出。
watch "dmesg | tail -20"
參數說明
total-vm:31354724kB, anon-rss:30636060kB, file-rss:476kB, shmem-rss:0kB
- RSS代表“駐留集大小”,即當前在進程中為RAM分配的內存量。
- anon-rss值為30636060kBkB.
- file-rss是交換文件中對於該系統中所有進程為0KB的內存量。
查看信息:
可以輸出最近killed的信息。
dmesg | egrep -i -B100 'killed process' ## 或: egrep -i 'killed process' /var/log/messages egrep -i -r 'killed process' /var/log ## 或: journalctl -xb | egrep -i 'killed process'
時間戳轉時間
dmesg -T | head -10
設定kill優先度:
(1)完全關掉oom(不建議):
sysctl vm.overcommit_memory=2 echo “vm.overcommit_memory=2” >> /etc/sysctl.conf
(2)出現 Out of memory之后重啟:
sysctl vm.panic_on_oom=1 sysctl kernel.panic=X echo “vm.panic_on_oom=1” >> /etc/sysctl.conf echo “kernel.panic=X” >> /etc/sysctl.conf
(3)優先考慮kill這個進程:
sudo echo 10>/proc/[PID]/oom_adj
(4)盡量不去kill這個進程:
sudo echo -15>/proc/[PID]/oom_adj
(5)不會kill這個進程:
sudo echo -17>/proc/[PID]/oom_adj
oom_adj的值在-16 到 +15之間,值越高被kill的優先度越高。當該值為-17時,系統將不會殺死指定pid的進程,而-16~15則會使得進程的/proc/[pid]/oom_adj值呈指數()形式遞增,即它們被殺掉的可能性呈指數遞增。針對init(進程號為1)這個進程,無論該值設為多少都不會被殺。
3.若拒絕訪問:
命令改為:
bash -c "echo '10' | tee /proc/[PID]/oom_adj" bash -c "echo '-15' | tee /proc/[PID]/oom_adj" bash -c "echo '-17' | tee /proc/[PID]/oom_adj"
centos系統內存 buff/cache 占用過高
情況說明: centos系統,buff/cache占用過高,導致服務器內存居高不下,但是通過top查看系統進程並無過多占用內存
實際情況:
處理步驟:
1.執行sync命令;
sync
2.執行釋放內存命令:
echo 3 > /proc/sys/vm/drop_caches
命令解釋:
sync 指令會將存於 buffer 中的資料強制寫入硬盤中。 echo 1 > /proc/sys/vm/drop_caches:表示清除pagecache。 echo 2 > /proc/sys/vm/drop_caches:表示清除回收slab分配器中的對象(包括目錄項緩存和inode緩存)。 echo 3 > /proc/sys/vm/drop_caches:表示清除pagecache和slab分配器中的緩存對象。
原文地址:https://blog.51cto.com/liujingyu/2448135,作者:劉景宇
參考地址:
linux 程序被Killed,查看原因:https://blog.csdn.net/zbzcDZF/article/details/90488442
Linux系統中‘dmesg’命令處理故障和收集系統信息的7種用法: https://linux.cn/article-3587-1.html