Linux 自动杀死进程

1、查看信息:

输入以下命令:

dmesg | egrep -i -B100 'killed process'

可以输出最近killed的信息。

 

2、设定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"

 

原文链接

posted @ 2023-04-17 10:09  juneyiiii  阅读(885)  评论(0)    收藏  举报