在linux中,出現killed的原因是系統資源不足或內存不足;當系統資源不足時,Linux內核也可以決定終止一個或多個進程,內存不足時會在系統的物理內存耗盡時觸發killed,可以利用“dmesg | tail -7”命令來查看killed日志。
本教程操作環境:linux7.3系統、Dell G3電腦。
linux出現killed的原因是什么
觸發Killed常見原因
當系統資源不足時,Linux 內核也可以決定終止一個或多個進程。 一個非常常見的例子是內存不足 (OOM) killer,會在系統的物理內存耗盡時觸發。
當內存不足時,內核會將相關信息記錄到內核日志緩沖區中,該緩沖區可通過 /dev/kmsg 獲得。
有幾個工具/腳本/命令 可以更輕松地從該虛擬設備讀取數據,其中最常見的是 dmesg 和 journalctl。
查看Killed日志
使用sudo dmesg | tail -7命令(任意目錄下,不需要進入log目錄,這應該是最簡單的一種)
可以看到:
oom-kill之后,就是解釋那個被killed的程序的pid和uid
Out of memory: Killed process 1138439 (python3) total-vm:8117956kB, anon-rss:5649844kB,內存不夠
total_vm:總共使用的虛擬內存 Virtual memory use (in 4 kB pages)
8117956/1024(得到MB)/1024(得到GB)=7.741GB
rss:常駐內存使用Resident memory use (in 4 kB pages)
5649844/1024/1024=5.388GB
擴展知識
使用下面的這幾行命令
journalctl?--list-boots?| awk?‘{?print?$1?}’?| xargs?-I{}?journalctl?--utc?--no-pager?-b?{}?-kqg?‘killed?process’?-o?verbose?--output-fields=MESSAGE
就可以直接得到,最關鍵的信息
hs@hs:~$?journalctl?--list-boots?|? >?????awk?'{?print?$1?}'?|? >?????xargs?-I{}?journalctl?--utc?--no-pager?-b?{}?-kqg?'killed?process'?-o?verbose?--output-fields=MESSAGE Mon?2022-02-14?08:48:43.684987?UTC?[s=ed0a1ecfd36e41bda458e5e111c46e95;i=d4573;b=7bc379f894944dcd81ae32ff54afa009;m=456b0ad36d2;t=5d7f67bdee47b;x=5bfe01f8e2ca9b2c] ????MESSAGE=Out?of?memory:?Killed?process?1125888?(python3)?total-vm:8530488kB,?anon-rss:5653404kB,?file-rss:0kB,?shmem-rss:0kB,?UID:1000?pgtables:12552kB?oom_score_adj:0 Mon?2022-02-14?09:29:43.854158?UTC?[s=ed0a1ecfd36e41bda458e5e111c46e95;i=d4785;b=7bc379f894944dcd81ae32ff54afa009;m=45743506aa5;t=5d7f70e82184e;x=9b55cfb2e7c081e7] ????MESSAGE=Out?of?memory:?Killed?process?1138439?(python3)?total-vm:8117956kB,?anon-rss:5649844kB,?file-rss:0kB,?shmem-rss:0kB,?UID:1000?pgtables:12544kB?oom_score_adj:0
網上更常見的似乎是:
journalctl?-xb?|?egrep?-i?'killed?process’ hs@hs:~$?journalctl?-xb?|?egrep?-i?'killed?process' Feb?14?08:48:43?hs?kernel:?Out?of?memory:?Killed?process?1125888?(python3)?total-vm:8530488kB,?anon-rss:5653404kB,?file-rss:0kB,?shmem-rss:0kB,?UID:1000?pgtables:12552kB?oom_score_adj:0 Feb?14?09:29:43?hs?kernel:?Out?of?memory:?Killed?process?1138439?(python3)?total-vm:8117956kB,?anon-rss:5649844kB,?file-rss:0kB,?shmem-rss:0kB,?UID:1000?pgtables:12544kB?oom_score_adj:0 Feb?15?03:42:08?hs?sudo[1151639]:???????hs?:?TTY=pts/0?;?PWD=/home/hs?;?USER=root?;?COMMAND=/usr/bin/egrep?-i?-r?killed?process?/var/log
以及
sudo?dmesg?|?egrep?-i?-B100?'killed?process' #?但是這個會輸出非常多的信息。。。
其中-B100,表示 ‘killed process’之前的100行內容
推薦學習:Linux視頻教程