32 lines
777 B
Bash
Executable File
32 lines
777 B
Bash
Executable File
#!/usr/bin/env bash
|
|
set -ex
|
|
#
|
|
# Install EarlyOOM
|
|
#
|
|
|
|
[[ $(uname) = Linux ]] || exit 1
|
|
[[ $USER = root ]] || exit 1
|
|
|
|
# 64 - enable signalling of processes (term, kill, oom-kill)
|
|
# TODO: This setting will not persist across reboots
|
|
sysctl -w kernel.sysrq=$(( $(cat /proc/sys/kernel/sysrq) | 64 ))
|
|
|
|
if command -v earlyoom; then
|
|
systemctl status earlyoom
|
|
else
|
|
wget -r -l1 -np http://ftp.us.debian.org/debian/pool/main/e/earlyoom/ -A 'earlyoom_1.2-*_amd64.deb' -e robots=off -nd
|
|
apt install --quiet --yes ./earlyoom_1.2-*_amd64.deb
|
|
|
|
cat > earlyoom <<OOM
|
|
# use the kernel OOM killer, trigger at 20% available RAM,
|
|
EARLYOOM_ARGS="-k -m 20"
|
|
OOM
|
|
cp earlyoom /etc/default/
|
|
rm earlyoom
|
|
|
|
systemctl stop earlyoom
|
|
systemctl enable earlyoom
|
|
systemctl start earlyoom
|
|
fi
|
|
|