mirror of
https://github.com/Ponce/slackbuilds
synced 2024-11-16 19:50:19 +01:00
system/earlyoom: Added (The Early OOM Daemon)
Signed-off-by: bedlam <dave@slackbuilds.org>
This commit is contained in:
parent
fdeee1781c
commit
7cf1544a43
7 changed files with 529 additions and 0 deletions
24
system/earlyoom/README
Normal file
24
system/earlyoom/README
Normal file
|
@ -0,0 +1,24 @@
|
|||
earlyoom checks the amount of available memory and free swap up to 10
|
||||
times a second (less often if there is a lot of free memory). By
|
||||
default if both are below 10%, it will kill the largest process
|
||||
(highest oom_score). The percentage value is configurable via command
|
||||
line arguments.
|
||||
|
||||
To enable it, put this line in your rc.local after running chmod +x on
|
||||
/etc/rc.d/rc.earlyoom:
|
||||
|
||||
if [ -x /etc/rc.d/rc.earlyoom ];
|
||||
then
|
||||
/etc/rc.d/rc.earlyoom start
|
||||
fi
|
||||
|
||||
and to have it turnoff at shutdown, simply put this in your
|
||||
rc.local_shutdown:
|
||||
|
||||
if [ -x /etc/rc.d/rc.earlyoom ];
|
||||
then
|
||||
/etc/rc.d/rc.earlyoom stop
|
||||
fi
|
||||
|
||||
A log file for it is kept at /var/log/earlyoom.log
|
||||
And earlyoom can be configured by modifying /etc/default/earlyoom
|
26
system/earlyoom/doinst.sh
Normal file
26
system/earlyoom/doinst.sh
Normal file
|
@ -0,0 +1,26 @@
|
|||
#!/bin/sh
|
||||
|
||||
config() {
|
||||
NEW="$1"
|
||||
OLD="$(dirname $NEW)/$(basename $NEW .new)"
|
||||
# If there's no config file by that name, mv it over:
|
||||
if [ ! -r $OLD ]; then
|
||||
mv $NEW $OLD
|
||||
elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then # toss the redundant copy
|
||||
rm $NEW
|
||||
fi
|
||||
# Otherwise, we leave the .new copy for the admin to consider...
|
||||
}
|
||||
|
||||
preserve_perms() {
|
||||
NEW="$1"
|
||||
OLD="$(dirname $NEW)/$(basename $NEW .new)"
|
||||
if [ -e $OLD ]; then
|
||||
cp -a $OLD ${NEW}.incoming
|
||||
cat $NEW > ${NEW}.incoming
|
||||
mv ${NEW}.incoming $NEW
|
||||
fi
|
||||
config $NEW
|
||||
}
|
||||
|
||||
preserve_perms etc/rc.d/rc.earlyoom.new
|
272
system/earlyoom/earlyoom.1
Normal file
272
system/earlyoom/earlyoom.1
Normal file
|
@ -0,0 +1,272 @@
|
|||
.\" Automatically generated by Pandoc 2.16.2
|
||||
.\"
|
||||
.TH "earlyoom" "1" "" "" "General Commands Manual"
|
||||
.hy
|
||||
.SH NAME
|
||||
.PP
|
||||
earlyoom - Early OOM Daemon
|
||||
.SH SYNOPSIS
|
||||
.PP
|
||||
\f[B]earlyoom\f[R] [\f[B]OPTION\f[R]]\&...
|
||||
.SH DESCRIPTION
|
||||
.PP
|
||||
The oom-killer generally has a bad reputation among Linux users.
|
||||
One may have to sit in front of an unresponsive system, listening to the
|
||||
grinding disk for minutes, and press the reset button to quickly get
|
||||
back to what one was doing after running out of patience.
|
||||
.PP
|
||||
\f[B]earlyoom\f[R] checks the amount of available memory and free swap
|
||||
up to 10 times a second (less often if there is a lot of free memory).
|
||||
If \f[B]both\f[R] memory \f[B]and\f[R] swap are below 10%, it will kill
|
||||
the largest process (highest \f[C]oom_score\f[R]).
|
||||
The percentage value is configurable via command line arguments.
|
||||
.PP
|
||||
If there is a failure when trying to kill a process, \f[B]earlyoom\f[R]
|
||||
sleeps for 1 second to limit log spam due to recurring errors.
|
||||
.SH OPTIONS
|
||||
.SS -m PERCENT[,KILL_PERCENT]
|
||||
.PP
|
||||
set available memory minimum to PERCENT of total (default 10 %).
|
||||
.PP
|
||||
earlyoom starts sending SIGTERM once \f[B]both\f[R] memory \f[B]and\f[R]
|
||||
swap are below their respective PERCENT setting.
|
||||
It sends SIGKILL once \f[B]both\f[R] are below their respective
|
||||
KILL_PERCENT setting (default PERCENT/2).
|
||||
.PP
|
||||
Use the same value for PERCENT and KILL_PERCENT if you always want to
|
||||
use SIGKILL.
|
||||
.PP
|
||||
Examples:
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
earlyoom # sets PERCENT=10, KILL_PERCENT=5
|
||||
earlyoom -m 30 # sets PERCENT=30, KILL_PERCENT=15
|
||||
earlyoom -m 20,18 # sets PERCENT=20, KILL_PERCENT=18
|
||||
\f[R]
|
||||
.fi
|
||||
.SS -s PERCENT[,KILL_PERCENT]
|
||||
.PP
|
||||
set free swap minimum to PERCENT of total (default 10 %).
|
||||
Send SIGKILL if at or below KILL_PERCENT (default PERCENT/2), otherwise
|
||||
SIGTERM.
|
||||
.PP
|
||||
You can use \f[C]-s 100\f[R] to have earlyoom effectively ignore swap
|
||||
usage: Processes are killed once available memory drops below the
|
||||
configured minimum, no matter how much swap is free.
|
||||
.PP
|
||||
Use the same value for PERCENT and KILL_PERCENT if you always want to
|
||||
use SIGKILL.
|
||||
.SS -M SIZE[,KILL_SIZE]
|
||||
.PP
|
||||
As an alternative to specifying a percentage of total memory,
|
||||
\f[C]-M\f[R] sets the available memory minimum to SIZE KiB.
|
||||
The value is internally converted to a percentage.
|
||||
If you pass both \f[C]-M\f[R] and \f[C]-m\f[R], the lower value is used.
|
||||
Example: Reserve 10% of RAM but at most 1 GiB:
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
earlyoom -m 10 -M 1048576
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
earlyoom sends SIGKILL if at or below KILL_SIZE (default SIZE/2),
|
||||
otherwise SIGTERM.
|
||||
.SS -S SIZE[,KILL_SIZE]
|
||||
.PP
|
||||
As an alternative to specifying a percentage of total swap, \f[C]-S\f[R]
|
||||
sets the free swap minimum to SIZE KiB.
|
||||
The value is internally converted to a percentage.
|
||||
If you pass both \f[C]-S\f[R] and \f[C]-s\f[R], the lower value is used.
|
||||
.PP
|
||||
Send SIGKILL if at or below KILL_SIZE (default SIZE/2), otherwise
|
||||
SIGTERM.
|
||||
.SS -k
|
||||
.PP
|
||||
removed in earlyoom v1.2, ignored for compatibility
|
||||
.SS -i
|
||||
.PP
|
||||
removed in earlyoom v1.7, ignored for compatibility
|
||||
.SS -d
|
||||
.PP
|
||||
enable debugging messages
|
||||
.SS -v
|
||||
.PP
|
||||
print version information and exit
|
||||
.SS -r INTERVAL
|
||||
.PP
|
||||
Time between printing periodic memory reports, in seconds (default 1.0).
|
||||
A memory report looks like this:
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
mem avail: 21790 of 23909 MiB (91.14%), swap free: 0 of 0 MiB ( 0.00%)
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
Set to 3600 to print a report every hour, to 86400 to print once a day
|
||||
etc.
|
||||
Set to 0 to disable printing periodic memory reports.
|
||||
Free memory monitoring and low-memory killing runs independently of this
|
||||
option at an adaptive poll rate that only depends on free memory.
|
||||
Due to the adaptive poll rate, when there is a lot of free memory, the
|
||||
actual interval may be up to 1 second longer than the setting.
|
||||
.SS -p
|
||||
.PP
|
||||
Increase earlyoom\[cq]s priority: set niceness of earlyoom to -20 and
|
||||
oom_score_adj to -100.
|
||||
.PP
|
||||
When earlyoom is run through its default systemd service, the
|
||||
\f[C]-p\f[R] switch doesn\[cq]t work.
|
||||
To achieve the same effect, enter the following three lines into
|
||||
\f[C]sudo systemctl edit earlyoom\f[R]:
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
[Service]
|
||||
OOMScoreAdjust=-100
|
||||
Nice=-20
|
||||
\f[R]
|
||||
.fi
|
||||
.SS -n
|
||||
.PP
|
||||
Enable notifications via d-bus.
|
||||
.PP
|
||||
To actually see the notifications in your GUI session, you need to have
|
||||
systembus-notify (https://github.com/rfjakob/systembus-notify) running
|
||||
as your user.
|
||||
.SS -N /PATH/TO/SCRIPT
|
||||
.PP
|
||||
Run the given script for each process killed.
|
||||
Must be an absolute path.
|
||||
.PP
|
||||
Within the script, information about the killed process can be obtained
|
||||
via the following environment variables:
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
EARLYOOM_PID Process PID
|
||||
EARLYOOM_NAME Process name truncated to 16 bytes (as reported in /proc/PID/comm)
|
||||
EARLYOOM_UID UID of the user running the process
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
WARNING: \f[C]EARLYOOM_NAME\f[R] can contain spaces, newlines, special
|
||||
characters and is controlled by the user, or it can be empty!
|
||||
Make sure that your notification script can handle that!
|
||||
.SS -g
|
||||
.PP
|
||||
Kill all processes that have same process group id (PGID) as the process
|
||||
with excessive memory usage.
|
||||
.PP
|
||||
For example, with this flag turned on, the whole application will be
|
||||
killed when one of its subprocess consumes too much memory (as long as
|
||||
they all have the same PGID, of course).
|
||||
.PP
|
||||
Enable this flag when completely cleaning up the \[lq]entire
|
||||
application\[rq] is more desirable, and you are sure that the
|
||||
application puts all its processes in the same PGID.
|
||||
.PP
|
||||
Note that some desktop environments (GNOME, for example) put all desktop
|
||||
application in the same process group as \f[C]gnome-shell\f[R].
|
||||
earlyoom might kill all such processes including \f[C]gnome-shell\f[R]
|
||||
when this flag is turned on.
|
||||
.PP
|
||||
Be sure to check how your environment behaves beforehand.
|
||||
Use
|
||||
.IP
|
||||
.nf
|
||||
\f[C]
|
||||
pstree -gT
|
||||
\f[R]
|
||||
.fi
|
||||
.PP
|
||||
to show all processes with the PGID in brackets.
|
||||
.SS --prefer REGEX
|
||||
.PP
|
||||
prefer killing processes matching REGEX (adds 300 to oom_score)
|
||||
.SS --avoid REGEX
|
||||
.PP
|
||||
avoid killing processes matching REGEX (subtracts 300 from oom_score)
|
||||
.SS --ignore REGEX
|
||||
.PP
|
||||
ignore processes matching REGEX.
|
||||
.PP
|
||||
Unlike the --avoid option, this option disables any potential killing of
|
||||
the matched processes that might have occurred due to the processes
|
||||
attaining a high oom_score.
|
||||
.PP
|
||||
Use this option with caution as other processes might be sacrificed in
|
||||
place of the ignored processes when earlyoom determines to kill
|
||||
processes.
|
||||
.SS --dryrun
|
||||
.PP
|
||||
dry run (do not kill any processes)
|
||||
.SS -h, --help
|
||||
.PP
|
||||
this help text
|
||||
.SH EXIT STATUS
|
||||
.PP
|
||||
0: Successful program execution.
|
||||
.PP
|
||||
1: Other error - inspect message for details
|
||||
.PP
|
||||
2: Switch conflict.
|
||||
.PP
|
||||
4: Could not cd to /proc
|
||||
.PP
|
||||
5: Could not open proc
|
||||
.PP
|
||||
7: Could not open /proc/sysrq-trigger
|
||||
.PP
|
||||
13: Unknown options.
|
||||
.PP
|
||||
14: Wrong parameters for other options.
|
||||
.PP
|
||||
15: Wrong parameters for memory threshold.
|
||||
.PP
|
||||
16: Wrong parameters for swap threshold.
|
||||
.PP
|
||||
102: Could not open /proc/meminfo
|
||||
.PP
|
||||
103: Could not read /proc/meminfo
|
||||
.PP
|
||||
104: Could not find a specific entry in /proc/meminfo
|
||||
.PP
|
||||
105: Could not convert number when parse the contents of /proc/meminfo
|
||||
.SH Why not trigger the kernel oom killer?
|
||||
.PP
|
||||
Earlyoom does not use \f[C]echo f > /proc/sysrq-trigger\f[R] because the
|
||||
Chrome people made their browser always be the first (innocent!)
|
||||
victim by setting \f[C]oom_score_adj\f[R] very high.
|
||||
Instead, earlyoom finds out itself by reading through
|
||||
\f[C]/proc/*/status\f[R] (actually \f[C]/proc/*/statm\f[R], which
|
||||
contains the same information but is easier to parse programmatically).
|
||||
.PP
|
||||
Additionally, in recent kernels (tested on 4.0.5), triggering the kernel
|
||||
oom killer manually may not work at all.
|
||||
That is, it may only free some graphics memory (that will be allocated
|
||||
immediately again) and not actually kill any process.
|
||||
.SH MEMORY USAGE
|
||||
.PP
|
||||
About 2 MiB VmRSS.
|
||||
All memory is locked using mlockall() to make sure earlyoom does not
|
||||
slow down in low memory situations.
|
||||
.SH BUGS
|
||||
.PP
|
||||
If there is zero total swap on earlyoom startup, any \f[C]-S\f[R]
|
||||
(uppercase \[lq]S\[rq]) values are ignored, a warning is printed, and
|
||||
default swap percentages are used.
|
||||
.PP
|
||||
For processes matched by \f[C]--prefer\f[R], negative
|
||||
\f[C]oom_score_adj\f[R] values are not taken into account, and the
|
||||
process gets an effective \f[C]oom_score\f[R] of at least 300.
|
||||
See https://github.com/rfjakob/earlyoom/issues/159 for details.
|
||||
.SH AUTHOR
|
||||
.PP
|
||||
The author of earlyoom is Jakob Unterwurzacher
|
||||
\[la]jakobunt\[at]gmail.com\[ra].
|
||||
.PP
|
||||
This manual page was written by Yangfl \[la]mmyangfl\[at]gmail.com\[ra],
|
||||
for the Debian project (and may be used by others).
|
108
system/earlyoom/earlyoom.SlackBuild
Normal file
108
system/earlyoom/earlyoom.SlackBuild
Normal file
|
@ -0,0 +1,108 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Slackware build script for earlyoom
|
||||
|
||||
# Copyright 2022 Charadon US
|
||||
# All rights reserved.
|
||||
#
|
||||
# Redistribution and use of this script, with or without modification, is
|
||||
# permitted provided that the following conditions are met:
|
||||
#
|
||||
# 1. Redistributions of this script must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
|
||||
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
||||
# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
cd $(dirname $0) ; CWD=$(pwd)
|
||||
|
||||
PRGNAM=earlyoom
|
||||
VERSION=${VERSION:-1.7}
|
||||
BUILD=${BUILD:-1}
|
||||
TAG=${TAG:-_SBo}
|
||||
PKGTYPE=${PKGTYPE:-tgz}
|
||||
|
||||
if [ -z "$ARCH" ]; then
|
||||
case "$( uname -m )" in
|
||||
i?86) ARCH=i586 ;;
|
||||
arm*) ARCH=arm ;;
|
||||
*) ARCH=$( uname -m ) ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
|
||||
# the name of the created package would be, and then exit. This information
|
||||
# could be useful to other scripts.
|
||||
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
|
||||
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
TMP=${TMP:-/tmp/SBo}
|
||||
PKG=$TMP/package-$PRGNAM
|
||||
OUTPUT=${OUTPUT:-/tmp}
|
||||
|
||||
if [ "$ARCH" = "i586" ]; then
|
||||
SLKCFLAGS="-O2 -march=i586 -mtune=i686"
|
||||
LIBDIRSUFFIX=""
|
||||
elif [ "$ARCH" = "i686" ]; then
|
||||
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
|
||||
LIBDIRSUFFIX=""
|
||||
elif [ "$ARCH" = "x86_64" ]; then
|
||||
SLKCFLAGS="-O2 -fPIC"
|
||||
LIBDIRSUFFIX="64"
|
||||
else
|
||||
SLKCFLAGS="-O2"
|
||||
LIBDIRSUFFIX=""
|
||||
fi
|
||||
|
||||
set -e
|
||||
|
||||
rm -rf $PKG
|
||||
mkdir -p $TMP $PKG $OUTPUT
|
||||
cd $TMP
|
||||
rm -rf $PRGNAM-$VERSION
|
||||
tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
|
||||
cd $PRGNAM-$VERSION
|
||||
chown -R root:root .
|
||||
find -L . \
|
||||
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
|
||||
-o -perm 511 \) -exec chmod 755 {} \; -o \
|
||||
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
|
||||
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
|
||||
|
||||
|
||||
make PREFIX=/usr
|
||||
make DESTDIR=$PKG PREFIX=/usr install-bin
|
||||
install -Dm644 earlyoom.default $PKG/etc/default/earlyoom
|
||||
install -Dm644 $CWD/earlyoom.1 $PKG/usr/man/man1/earlyoom.1
|
||||
|
||||
|
||||
rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
|
||||
|
||||
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
|
||||
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
|
||||
|
||||
find $PKG/usr/man -type f -exec gzip -9 {} \;
|
||||
for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
|
||||
|
||||
install -Dm644 $CWD/rc.earlyoom $PKG/etc/rc.d/rc.earlyoom.new
|
||||
|
||||
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
|
||||
#cp -a <documentation> $PKG/usr/doc/$PRGNAM-$VERSION
|
||||
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
|
||||
|
||||
mkdir -p $PKG/install
|
||||
cat $CWD/slack-desc > $PKG/install/slack-desc
|
||||
cat $CWD/doinst.sh > $PKG/install/doinst.sh
|
||||
|
||||
cd $PKG
|
||||
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
|
10
system/earlyoom/earlyoom.info
Normal file
10
system/earlyoom/earlyoom.info
Normal file
|
@ -0,0 +1,10 @@
|
|||
PRGNAM="earlyoom"
|
||||
VERSION="1.7"
|
||||
HOMEPAGE="https://github.com/rfjakob/earlyoom"
|
||||
DOWNLOAD="https://github.com/rfjakob/earlyoom/archive/v1.7/earlyoom-1.7.tar.gz"
|
||||
MD5SUM="9c567930c60b2ccdc536951b005d413d"
|
||||
DOWNLOAD_x86_64=""
|
||||
MD5SUM_x86_64=""
|
||||
REQUIRES=""
|
||||
MAINTAINER="Charadon"
|
||||
EMAIL="dev@iotib.net"
|
70
system/earlyoom/rc.earlyoom
Normal file
70
system/earlyoom/rc.earlyoom
Normal file
|
@ -0,0 +1,70 @@
|
|||
#!/bin/sh
|
||||
set -eu
|
||||
|
||||
. /etc/default/earlyoom
|
||||
|
||||
do_start() {
|
||||
if ps -p "$(cat /var/run/earlyoom.pid)" > /dev/null
|
||||
then
|
||||
echo "earlyoom is already running."
|
||||
else
|
||||
echo "Starting earlyoom..."
|
||||
nohup /usr/bin/earlyoom $EARLYOOM_ARGS > /var/log/earlyoom.log 2>&1 &
|
||||
echo "$!" > /var/run/earlyoom.pid
|
||||
fi
|
||||
}
|
||||
|
||||
do_stop() {
|
||||
if ps -p "$(cat /var/run/earlyoom.pid)" > /dev/null
|
||||
then
|
||||
echo "Stopping earlyoom..."
|
||||
kill -15 "$(cat /var/run/earlyoom.pid)"
|
||||
else
|
||||
echo "earlyoom is not running."
|
||||
fi
|
||||
}
|
||||
|
||||
do_force_stop() {
|
||||
if ps -p "$(cat /var/run/earlyoom.pid)" > /dev/null
|
||||
then
|
||||
echo "Killing earlyoom..."
|
||||
kill -9 "$(cat /var/run/earlyoom.pid)"
|
||||
else
|
||||
echo "earlyoom appears to not be running."
|
||||
fi
|
||||
}
|
||||
|
||||
do_restart() {
|
||||
do_stop
|
||||
do_start
|
||||
}
|
||||
|
||||
do_status() {
|
||||
if ps -p "$(cat /var/run/earlyoom.pid)" > /dev/null
|
||||
then
|
||||
echo "earlyoom is running with pid $(cat /var/run/earlyoom.pid)."
|
||||
else
|
||||
echo "earlyoom is not running."
|
||||
fi
|
||||
}
|
||||
|
||||
case $1 in
|
||||
start)
|
||||
do_start
|
||||
;;
|
||||
stop)
|
||||
do_stop
|
||||
;;
|
||||
restart)
|
||||
do_restart
|
||||
;;
|
||||
force-stop)
|
||||
do_force_stop
|
||||
;;
|
||||
status)
|
||||
do_status
|
||||
;;
|
||||
*)
|
||||
echo "USAGE: rc.earlyoom (start|stop|force-stop|restart|status)"
|
||||
;;
|
||||
esac
|
19
system/earlyoom/slack-desc
Normal file
19
system/earlyoom/slack-desc
Normal file
|
@ -0,0 +1,19 @@
|
|||
# HOW TO EDIT THIS FILE:
|
||||
# The "handy ruler" below makes it easier to edit a package description.
|
||||
# Line up the first '|' above the ':' following the base package name, and
|
||||
# the '|' on the right side marks the last column you can put a character in.
|
||||
# You must make exactly 11 lines for the formatting to be correct. It's also
|
||||
# customary to leave one space after the ':' except on otherwise blank lines.
|
||||
|
||||
|-----handy-ruler------------------------------------------------------|
|
||||
earlyoom: earlyoom (The Early OOM Daemon)
|
||||
earlyoom:
|
||||
earlyoom: earlyoom checks the amount of available memory and free swap up to
|
||||
earlyoom: 10 times a second (less often if there is a lot of free memory). By
|
||||
earlyoom: default if both are below 10%, it will kill the largest process
|
||||
earlyoom: (highest oom_score). The percentage value is configurable via
|
||||
earlyoom: command line arguments.
|
||||
earlyoom:
|
||||
earlyoom:
|
||||
earlyoom:
|
||||
earlyoom:
|
Loading…
Reference in a new issue