diff options
author | B. Watson <urchlay@slackware.uk> | 2023-08-29 20:38:59 -0400 |
---|---|---|
committer | Willy Sudiarto Raharjo <willysr@slackbuilds.org> | 2023-09-02 18:02:31 +0700 |
commit | 468b282317b4da6138f237f325de64ddcab3ea61 (patch) | |
tree | 8ee7d6f0f66cd971c9b1801fd80af3258325c27f /system/earlyoom | |
parent | b36c1a8065f523476a7ad67b6449ff32251c74d3 (diff) |
system/earlyoom: New maintainer, various fixes.
Signed-off-by: B. Watson <urchlay@slackware.uk>
Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
Diffstat (limited to 'system/earlyoom')
-rw-r--r-- | system/earlyoom/README | 32 | ||||
-rw-r--r-- | system/earlyoom/doinst.sh | 5 | ||||
-rw-r--r-- | system/earlyoom/earlyoom.8 (renamed from system/earlyoom/earlyoom.1) | 8 | ||||
-rw-r--r-- | system/earlyoom/earlyoom.SlackBuild | 60 | ||||
-rw-r--r-- | system/earlyoom/earlyoom.info | 4 | ||||
-rw-r--r-- | system/earlyoom/rc.earlyoom | 4 | ||||
-rw-r--r-- | system/earlyoom/slack-desc | 12 |
7 files changed, 68 insertions, 57 deletions
diff --git a/system/earlyoom/README b/system/earlyoom/README index fa2893b2b9d3d..95f8c2fbec66d 100644 --- a/system/earlyoom/README +++ b/system/earlyoom/README @@ -1,24 +1,30 @@ -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. +earlyoom (the early out-of-memory daemon) + +The Linux kernel's 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. + +earlyoom is a userspace daemon that can be triggered earlier than the +kernel's OOM-killer. It 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 +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: +...and to have it exit at shutdown, put this in your rc.local_shutdown: -if [ -x /etc/rc.d/rc.earlyoom ]; -then +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 +A log file for it is kept at /var/log/earlyoom.log, and earlyoom can +be configured by modifying /etc/default/earlyoom. diff --git a/system/earlyoom/doinst.sh b/system/earlyoom/doinst.sh index 7290fb4b615d5..e32196a11c838 100644 --- a/system/earlyoom/doinst.sh +++ b/system/earlyoom/doinst.sh @@ -3,13 +3,11 @@ 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 + elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then rm $NEW fi - # Otherwise, we leave the .new copy for the admin to consider... } preserve_perms() { @@ -23,4 +21,5 @@ preserve_perms() { config $NEW } +config etc/default/earlyoom.new preserve_perms etc/rc.d/rc.earlyoom.new diff --git a/system/earlyoom/earlyoom.1 b/system/earlyoom/earlyoom.8 index 0bcf687a2e5c4..9431b55a44fc4 100644 --- a/system/earlyoom/earlyoom.1 +++ b/system/earlyoom/earlyoom.8 @@ -1,6 +1,4 @@ -.\" Automatically generated by Pandoc 2.16.2 -.\" -.TH "earlyoom" "1" "" "" "General Commands Manual" +.TH "earlyoom" "8" "August 2023" "1.7" "Linux System Administrator's Manual" .hy .SH NAME .PP @@ -266,7 +264,7 @@ 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]. +<jakobunt@gmail.com>. .PP -This manual page was written by Yangfl \[la]mmyangfl\[at]gmail.com\[ra], +This manual page was written by Yangfl <mmyangfl@gmail.com>, for the Debian project (and may be used by others). diff --git a/system/earlyoom/earlyoom.SlackBuild b/system/earlyoom/earlyoom.SlackBuild index 4934e0ad80f78..9a04c784298b6 100644 --- a/system/earlyoom/earlyoom.SlackBuild +++ b/system/earlyoom/earlyoom.SlackBuild @@ -3,6 +3,7 @@ # Slackware build script for earlyoom # Copyright 2022 Charadon US +# Copyright 2023 B. Watson # All rights reserved. # # Redistribution and use of this script, with or without modification, is @@ -22,11 +23,19 @@ # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# 20230829 bkw: BUILD=2 +# - add LICENSE and README.md to the doc dir. +# - binary in /usr/sbin, man page in section 8, since this is admin stuff. +# - have the init script delete the PID file after stop or force_stop. +# - actually use SLKCFLAGS. +# - make /etc/default/earlyoom a .new config file. +# - add a bit more detail to README. + cd $(dirname $0) ; CWD=$(pwd) PRGNAM=earlyoom VERSION=${VERSION:-1.7} -BUILD=${BUILD:-1} +BUILD=${BUILD:-2} TAG=${TAG:-_SBo} PKGTYPE=${PKGTYPE:-tgz} @@ -38,9 +47,6 @@ case "$( uname -m )" in 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 @@ -52,16 +58,12 @@ 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 @@ -73,32 +75,36 @@ 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 +find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} + -o \ + \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} + +# 20230829 bkw: don't generate the man page even if pandoc is installed, +# since we're going to use a prebuilt one. +sed -i '/^PANDOC *:=/d' Makefile -rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la +# 20230829 bkw: no way to do this on the make command line: +sed -i "/^CFLAGS/s,-Wall,& $SLKCFLAGS," Makefile -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 +# 20230829 bkw: note to self: non-canonical use of BINDIR here. It's not +# the full path (/usr/sbin), it gets PREFIX prepended to it. +make PREFIX=/usr BINDIR=/sbin +strip $PRGNAM +make DESTDIR=$PKG PREFIX=/usr BINDIR=/sbin install-bin -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 +# 20230829 bkw: prebuilt man page is a bit different from the generated one: +# - it's a section 8 page. +# - it has the date and "Linux System Administrator's Manual" filled in. +# - get rid of fancy unicode angle brackets for email addresses, just use <>. +mkdir -p $PKG/usr/man/man8 +gzip -9 < $CWD/earlyoom.8 > $PKG/usr/man/man8/earlyoom.8.gz install -Dm644 $CWD/rc.earlyoom $PKG/etc/rc.d/rc.earlyoom.new +install -Dm644 earlyoom.default $PKG/etc/default/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 +PKGDOC=$PKG/usr/doc/$PRGNAM-$VERSION +mkdir -p $PKGDOC +cp -a README* LICENSE* $PKGDOC +cat $CWD/$PRGNAM.SlackBuild > $PKGDOC/$PRGNAM.SlackBuild mkdir -p $PKG/install cat $CWD/slack-desc > $PKG/install/slack-desc diff --git a/system/earlyoom/earlyoom.info b/system/earlyoom/earlyoom.info index 37a84be0fcaba..bb2d219617c9b 100644 --- a/system/earlyoom/earlyoom.info +++ b/system/earlyoom/earlyoom.info @@ -6,5 +6,5 @@ MD5SUM="9c567930c60b2ccdc536951b005d413d" DOWNLOAD_x86_64="" MD5SUM_x86_64="" REQUIRES="" -MAINTAINER="Charadon" -EMAIL="dev@iotib.net" +MAINTAINER="B. Watson" +EMAIL="urchlay@slackware.uk" diff --git a/system/earlyoom/rc.earlyoom b/system/earlyoom/rc.earlyoom index 033a8e53925a9..0e1cbb303df87 100644 --- a/system/earlyoom/rc.earlyoom +++ b/system/earlyoom/rc.earlyoom @@ -14,7 +14,7 @@ do_start() { fi echo "Starting earlyoom..." # shellcheck disable=2086 - nohup /usr/bin/earlyoom $EARLYOOM_ARGS > /var/log/earlyoom.log 2>&1 & + nohup /usr/sbin/earlyoom $EARLYOOM_ARGS > /var/log/earlyoom.log 2>&1 & echo "$!" > /var/run/earlyoom.pid exit 0 } @@ -26,6 +26,7 @@ do_stop() { then echo "Stopping earlyoom..." kill -15 "$(cat /var/run/earlyoom.pid)" > /dev/null 2>&1 + rm -f /var/run/earlyoom.pid exit 0 fi fi @@ -39,6 +40,7 @@ do_force_stop() { then echo "Killing earlyoom..." kill -9 "$(cat /var/run/earlyoom.pid)" > /dev/null 2>&1 + rm -f /var/run/earlyoom.pid exit 0 fi fi diff --git a/system/earlyoom/slack-desc b/system/earlyoom/slack-desc index a39853a125038..5eef07ce20fa9 100644 --- a/system/earlyoom/slack-desc +++ b/system/earlyoom/slack-desc @@ -6,14 +6,14 @@ # customary to leave one space after the ':' except on otherwise blank lines. |-----handy-ruler------------------------------------------------------| -earlyoom: earlyoom (The Early OOM Daemon) +earlyoom: earlyoom (the early out-of-memory 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: earlyoom is a userspace daemon that can be triggered earlier than the +earlyoom: kernel's OOM-killer. It checks the amount of available memory and free +earlyoom: swap up to 10 times a second (less often if there is a lot of free +earlyoom: memory). By default if both are below 10%, it will kill the largest +earlyoom: process (highest oom_score). The percentage value is configurable via earlyoom: command line arguments. earlyoom: earlyoom: earlyoom: -earlyoom: |