]> Freerunner's - dotfiles.git/commitdiff
scripts: add some
authorAndre Ramnitz <andre.ramnitz@mail.de>
Sun, 18 Oct 2026 07:47:47 +0000 (09:47 +0200)
committerAndre Ramnitz <andre.ramnitz@mail.de>
Sun, 18 Oct 2026 07:47:47 +0000 (09:47 +0200)
dot-local/bin/check-ram-pressure.sh [new file with mode: 0755]
dot-local/bin/ipv6-toggle.sh [new file with mode: 0755]
dot-local/bin/kak-theme-sync [new file with mode: 0755]
dot-local/bin/log-ram-pressure.sh [new file with mode: 0755]
dot-local/bin/upgrayyedd [deleted file]
dot-local/bin/upgrayyeddv2 [new file with mode: 0755]

diff --git a/dot-local/bin/check-ram-pressure.sh b/dot-local/bin/check-ram-pressure.sh
new file mode 100755 (executable)
index 0000000..87d4d07
--- /dev/null
@@ -0,0 +1,30 @@
+#!/bin/bash
+clear
+echo "free:"
+free
+printf '\n'
+echo "grep -i zswap /proc/meminfo:"
+grep -i zswap /proc/meminfo
+printf '\n'
+echo "grep -E '^zswp' /proc/vmstat:"
+grep -E '^zswp' /proc/vmstat
+printf '\n'
+echo "grep -E '^(zswap|zswapped|zswpin|zswpout|zswpwb) ' /sys/fs/cgroup/memory.stat:"
+grep -E '^(zswap|zswapped|zswpin|zswpout|zswpwb) ' /sys/fs/cgroup/memory.stat
+printf '\n'
+echo "grep -E '^(pswpin|pswpout) ' /proc/vmstat:"
+grep -E '^(pswpin|pswpout) ' /proc/vmstat
+printf '\n'
+echo "ps -eLo pid,tid,psr,cls,rtprio,ni,pcpu,comm --sort=-pcpu | head -n 27:"
+ps -eLo pid,tid,psr,cls,rtprio,ni,pcpu,comm --sort=-pcpu | head -n 27
+    printf '\n'
+if [[ -d "/proc/pressure" ]]; then
+    echo "PSI - Pressure Stall Information"
+    printf '\n'
+    echo "cat /proc/pressure/cpu"
+    cat /proc/pressure/cpu
+    printf '\n'
+    echo "cat /proc/pressure/memory"
+    cat /proc/pressure/memory
+fi
+
diff --git a/dot-local/bin/ipv6-toggle.sh b/dot-local/bin/ipv6-toggle.sh
new file mode 100755 (executable)
index 0000000..c2ef0bf
--- /dev/null
@@ -0,0 +1,13 @@
+#!/bin/bash
+
+INTERFACE="enp16s0"
+SYSCTL="net.ipv6.conf.${INTERFACE}.disable_ipv6"
+
+if [[ $(sysctl -n "$SYSCTL") == 0 ]]; then
+    sudo sysctl -w "$SYSCTL=1"
+    echo "IPv6 auf $INTERFACE deaktiviert."
+else
+    sudo sysctl -w "$SYSCTL=0"
+    echo "IPv6 auf $INTERFACE aktiviert."
+fi
+
diff --git a/dot-local/bin/kak-theme-sync b/dot-local/bin/kak-theme-sync
new file mode 100755 (executable)
index 0000000..702a3b6
--- /dev/null
@@ -0,0 +1,19 @@
+#!/bin/bash
+
+case "$NOCTALIA_THEME_MODE" in
+    dark)
+        theme="dabruin"
+        ;;
+    light)
+        theme="dabruin-light"
+        ;;
+    *)
+        exit 0
+        ;;
+esac
+
+kak -l | while IFS= read -r session; do
+    printf 'colorscheme %s\n' "$theme" |
+        kak -p "$session" 2>/dev/null
+done
+
diff --git a/dot-local/bin/log-ram-pressure.sh b/dot-local/bin/log-ram-pressure.sh
new file mode 100755 (executable)
index 0000000..468f18c
--- /dev/null
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+while sleep 2;
+    do
+        date '+--- %F %T ---';
+        grep -E '^(MemAvailable|SwapFree|Zswap|Zswapped):' /proc/meminfo;
+        grep -E '^(zswpin|zswpout|zswpwb|pswpin|pswpout) ' /proc/vmstat;
+        grep -E '^(some|full) ' /proc/pressure/memory;
+    done > ~/memory-pressure.log
diff --git a/dot-local/bin/upgrayyedd b/dot-local/bin/upgrayyedd
deleted file mode 100755 (executable)
index 25b1c94..0000000
+++ /dev/null
@@ -1,264 +0,0 @@
-#!/bin/bash
-
-PORTAGE_CPUS="8-15,24-31"
-BUILD_CGROUP="/sys/fs/cgroup/openrc.portage-cgroup"
-
-# make sure we're root
-root_check(){
-    if [ "$(id -u)" -ne 0 ];then
-        echo ""
-        echo "You have to run this script with sudo"
-        exit 0
-    fi
-}
-
-pin_to_ccd() {
-    taskset -pc "$PORTAGE_CPUS" $$ >/dev/null || {
-        echo "CPU affinity konnte nicht gesetzt werden"
-        exit 1
-    }
-}
-
-ccd_emerge() {
-    taskset -c "$PORTAGE_CPUS" /usr/bin/emerge "$@"
-}
-
-ccd_make() {
-    taskset -c "$PORTAGE_CPUS" schedtool -D -e make "$@"
-}
-
-run_in_portage_cgroup () {
-    (
-        echo "$BASHPID" > "$BUILD_CGROUP/cgroup.procs" || exit 1
-        exec "$@"
-    )
-}
-
-# make sure we're running gentoo
-grep -i gentoo /etc/os-release || { echo "Dieses System basiert nicht auf Gentoo" && exit 1; }
-
-numcores="$(echo ""$(nproc)"" /2 | bc)"
-
-cd_to_src(){
-    readlink -f "/usr/src/linux" || { echo "Symlink /usr/src/linux nicht gesetzt oder fehlerhaft" && exit 2; }
-    cd "/usr/src/linux" || { echo "Verzeichniswechsel fehlgeschlagen" && exit 2; }
-}
-
-clean_builddir(){
-    make mrproper
-}
-
-call_makejobs(){
-    # pin_to_ccd
-    ccd_make  oldconfig
-    ccd_make  modules_prepare
-    ccd_make  -j"$numcores" || exit 2
-    ccd_make  modules_install
-    ccd_make  install
-    run_in_portage_cgroup schedtool -D -e emerge -avuDNg @module-rebuild
-}
-
-build_kernel_in_cgroup(){
-    (
-    echo "$BASHPID" > "$BUILD_CGROUP/cgroup.procs" || exit 1
-    make  oldconfig
-    make  modules_prepare
-    make  -j"$numcores" || exit 2
-    make  modules_install
-    make  install
-    run_in_portage_cgroup schedtool -D -e emerge -avuDNg @module-rebuild
-    )
-}
-
-prepare_config(){
-    cp "/usr/src/config-$1" ".config"
-    test -f "./.config" || { echo "Kopieren der config fehlgeschlagen" && exit 2; }
-}
-
-print_version(){
-    echo "Building version:"
-    head -n5 Makefile
-    echo ""
-}
-
-build_timeout(){
-    unset key
-    read -n 1 -s -r -p "Press any key to continue" key
-}
-
-case "$1" in
-    check)
-        emerge -puDNg @world
-        ;;
-    sync|ref|refresh)
-        root_check
-        emaint sync -A
-        ;;
-    world|dup)
-        root_check
-        run_in_portage_cgroup schedtool -D -e emerge -avuDNg @world "${@:2}"
-        exit 0
-        ;;
-    wbdeps|wbd)
-        root_check
-        run_in_portage_cgroup schedtool -D -e emerge -avuDNg --with-bdeps=y --binpkg-changed-deps=y @world "${@:2}"
-        exit 0
-        ;;
-    daily|all)
-        root_check
-        emaint sync -A
-        run_in_portage_cgroup  schedtool -D -e emerge -avuDNg @world "${@:2}"
-        exit 0
-        ;;
-    pkg|in)
-        root_check
-        run_in_portage_cgroup  schedtool -D -e emerge -avg "${@:2}"
-        exit 0
-        ;;
-    skipkernel)
-        root_check
-        /usr/bin/emerge -avuDNg @world --exclude=dist-kernel --exclude=gentoo-kernel --exclude=gentoo-sources --exclude=git-sources "${@:2}"
-        exit 0
-        ;;
-    preserved)
-        root_check
-        run_in_portage_cgroup  schedtool -D -e emerge -av @preserved-rebuild
-        exit 0
-        ;;
-    wholeworld)
-        PORTAGE_CPUS=32
-        root_check
-        schedtool -B -e /usr/bin/emerge -avuDeg --with-bdeps=y --usepkg=n --binpkg-changed-deps=n --keep-going=y @world --exclude="acct-group/* acct-user/* virtual/* app-eselect/* sys-kernel/* sys-firmware/* dev-python/* dev-java/* dev-ruby/* dev-perl/* dev-lua/* dev-php/* dev-tex/* dev-texlive/* x11-themes/* */*-bin"
-        exit 0
-        ;;
-    search|se)
-        root_check
-        /usr/bin/emerge --search "${@:2}"
-        exit 0
-        ;;
-    clean|rm)
-        root_check
-        /usr/bin/emerge -a --depclean "${@:2}"
-        exit 0
-        ;;
-    checkclean)
-        /usr/bin/emerge -apv --depclean "${@:2}"
-        exit 0
-        ;;
-    live)
-        root_check
-        /usr/bin/emerge -av @live-rebuild
-        ;;
-    flatpaks)
-        flatpak update
-        ;;
-    kernel-live)
-        root_check
-       cd_to_src
-        test -f "./.config" || exit 2
-       print_version
-       build_timeout
-       build_kernel_in_cgroup
-       # call_makejobs
-        cd -
-       exit 0
-        ;;
-    kernel-gentoo)
-        root_check
-               cd "/usr/src/linux" || exit 2
-               clean_builddir
-               prepare_config "gentoo"
-               print_version
-               build_timeout
-               call_makejobs
-               echo "Build completed. Remember to upgrayyedd /usr/src/config-* if necessary."
-               exit 0
-        ;;
-    kernel-llvm)
-        root_check
-               cd "/usr/src/linux" || exit 2
-               clean_builddir
-               prepare_config "llvm"
-               print_version
-               build_timeout
-               call_makejobs
-               echo "Build completed. Remember to upgrayyedd /usr/src/config-* if necessary."
-               exit 0
-        ;;
-    kernel-git)
-        root_check
-               cd "/usr/src/linux" || exit 2
-               clean_builddir
-               prepare_config "git"
-               print_version
-               build_timeout
-               call_makejobs
-               echo "Build completed. Remember to upgrayyedd /usr/src/config-* if necessary."
-               exit 0
-        ;;
-    kernel-server)
-        root_check
-               cd "/usr/src/linux" || exit 2
-               clean_builddir
-               prepare_config "server"
-               print_version
-               build_timeout
-               call_makejobs
-               echo "Build completed. Remember to upgrayyedd /usr/src/config-* if necessary."
-               exit 0
-        ;;
-    clean-kernels)
-        root_check
-        echo "Relevant files in /boot:"
-       echo ""
-        command ls -1 --hide='*/' /boot/System.map* /boot/initramfs* /boot/vmlinuz*
-        eclean-kernel -aA -L std
-        ;;
-    log)
-        grep -i --color=auto "completed" /var/log/emerge.log
-        echo "note: use 'date -d @[unixtime]' to convert the timestamp"
-        ;;
-    unlog)
-        grep -i --color=auto "unmerging" /var/log/emerge.log
-        echo "note: use 'date -d @[unixtime]' to convert the timestamp"
-        ;;
-    testify)
-        run_in_portage_cgroup bash -c '
-        echo "PID: $$"
-        echo "cgroup:"
-        cat /proc/$$/cgroup
-        echo "allowed CPUs:"
-        grep Cpus_allowed_list /proc/$$/status
-        '
-        ;;
-    *)
-        printf '\nCurrently available commands:\n\n'
-       printf '%s\t%s\n' \
-       'sync          ' 'synchronize repos' \
-       'check         ' 'check for updates' \
-       'search  | se  ' 'search packages' \
-       'refresh | ref ' 'sync and update world' \
-       ' ' ' ' \
-       'livebuilds    ' 'update all live packages' \
-       'flatpaks      ' 'update flatpaks' \
-       'world   | dup ' 'update world' \
-       ' ' ' ' \
-       'wholeworld    ' 'rebuild everything from scratch' \
-       ' ' ' ' \
-       '--            ' 'install packages given as argument' \
-       ' ' ' ' \
-       'kernel-gentoo ' 'build kernel flavor: gentoo' \
-       'kernel-llvm   ' 'build kernel flavor: llvm' \
-       'kernel-git    ' 'build kernel flavor: git' \
-       'kernel-server ' 'build kernel flavor: server' \
-       ' ' ' ' \
-       'checkclean    ' 'check for orphans' \
-       'clean         ' 'clean orphaned packages' \
-       'preserved     ' 'clean-up old libraries' \
-       'clean-kernels ' 'remove old kernels' \
-       ' ' ' ' \
-       'log           ' 'view recently emerged files' \
-       'unlog         ' 'view recently unmerged files' \
-       ' ' ' '
-        ;;
-esac
diff --git a/dot-local/bin/upgrayyeddv2 b/dot-local/bin/upgrayyeddv2
new file mode 100755 (executable)
index 0000000..b756955
--- /dev/null
@@ -0,0 +1,354 @@
+#!/usr/bin/env bash
+
+BUILD_CGROUP="/sys/fs/cgroup/openrc.portage-cgroup"
+KERNEL_SRC="/usr/src/linux"
+
+# ----- generic helpers -------------------------------------------------------
+
+die() {
+    echo "Error: $*" >&2
+    exit 1
+}
+
+root_check() {
+    (( EUID == 0 )) || die "You have to run this script with sudo"
+}
+
+require_gentoo() {
+    grep -qi 'gentoo' /etc/os-release ||
+        die "Dieses System basiert nicht auf Gentoo"
+}
+
+# ----- build cgroup ----------------------------------------------------------
+
+check_build_cgroup() {
+    [[ -d "$BUILD_CGROUP" ]] ||
+        die "Build cgroup does not exist: $BUILD_CGROUP"
+
+    [[ -w "$BUILD_CGROUP/cgroup.procs" ]] ||
+        die "Cannot write to $BUILD_CGROUP/cgroup.procs"
+}
+
+enter_build_cgroup() {
+    check_build_cgroup
+
+    echo "$BASHPID" > "$BUILD_CGROUP/cgroup.procs" ||
+        die "Could not enter build cgroup"
+}
+
+run_in_build_cgroup() {
+    (
+        enter_build_cgroup
+        exec "$@"
+    )
+}
+
+emerge_build() {
+    run_in_build_cgroup \
+        schedtool -D -e \
+        /usr/bin/emerge "$@"
+}
+
+# ----- portage operations ---------------------------------------------------
+
+sync_all_repos() {
+    emaint sync -A
+}
+
+sync_repos_auto() {
+    emaint sync -a
+}
+
+update_world() {
+    emerge_build -avuDNg @world "$@"
+}
+
+daily_update() {
+    sync_repos_auto && update_world "$@"
+}
+
+update_world_with_bdeps() {
+    emerge_build \
+        -avuDNg \
+        --with-bdeps=y \
+        --binpkg-changed-deps=y \
+        @world "$@"
+}
+
+# ----- kernel build ---------------------------------------------------------
+
+cd_to_src() {
+    [[ -L "$KERNEL_SRC" ]] ||
+        die "Symlink $KERNEL_SRC ist nicht gesetzt"
+
+    [[ -f "$KERNEL_SRC/Makefile" ]] ||
+        die "$KERNEL_SRC zeigt nicht auf einen gueltigen Kernel-Quellbaum"
+
+    cd "$KERNEL_SRC" ||
+        die "Verzeichniswechsel nach $KERNEL_SRC fehlgeschlagen"
+}
+
+prepare_config() {
+    local flavor=$1
+    local config="/usr/src/config-$flavor"
+
+    [[ -f "$config" ]] ||
+        die "Kernel config does not exist: $config"
+
+    cp -- "$config" .config ||
+        die "Kopieren von $config nach .config fehlgeschlagen"
+}
+
+print_version() {
+    echo
+    echo "Building version:"
+    head -n 5 Makefile
+    echo
+}
+
+build_timeout() {
+    local key
+    read -n 1 -s -r -p "Press any key to continue" key
+    echo
+}
+
+build_kernel_in_cgroup() {
+    (
+        # Enter the build cgroup once. All make processes and their children
+        # inherit the cpuset/resource limits from here on.
+        enter_build_cgroup
+
+        local jobs
+        jobs=$(nproc) || exit 2
+
+        echo "Using $jobs build jobs from the cgroup CPU set."
+        echo
+
+        schedtool -D -e make oldconfig || exit 2
+        schedtool -D -e make modules_prepare || exit 2
+        schedtool -D -e make -j"$jobs" || exit 2
+        schedtool -D -e make modules_install || exit 2
+        schedtool -D -e make install || exit 2
+    )
+}
+
+kernel_build() {
+    local flavor=${1:-live}
+
+    root_check
+    cd_to_src
+
+    if [[ "$flavor" == "live" ]]; then
+        [[ -f .config ]] ||
+            die "No .config found in $KERNEL_SRC"
+    else
+        make mrproper ||
+            die "make mrproper failed"
+
+        prepare_config "$flavor"
+    fi
+
+    print_version
+    build_timeout
+
+    build_kernel_in_cgroup ||
+        die "Kernel build failed"
+
+    emerge_build -avuDNg @module-rebuild ||
+        die "Module rebuild failed"
+
+    echo
+    echo "Build completed."
+
+    if [[ "$flavor" != "live" ]]; then
+        echo "Remember to upgrayyedd /usr/src/config-* if necessary."
+    fi
+}
+
+# ----- main -----------------------------------------------------------------
+
+require_gentoo
+
+case "${1:-}" in
+    check)
+        /usr/bin/emerge -puDNg @world
+        ;;
+
+    sync|ref|refresh)
+        root_check
+        sync_all_repos
+        ;;
+
+    daily|all)
+        root_check
+        daily_update "${@:2}"
+        ;;
+
+    world|dup)
+        root_check
+        update_world "${@:2}"
+        ;;
+
+    wbdeps|wbd)
+        root_check
+        update_world_with_bdeps "${@:2}"
+        ;;
+
+    pkg|in)
+        root_check
+        emerge_build -avg "${@:2}"
+        ;;
+
+    skipkernel)
+        root_check
+        emerge_build \
+            -avuDNg \
+            @world \
+            --exclude=dist-kernel \
+            --exclude=gentoo-kernel \
+            --exclude=gentoo-sources \
+            --exclude=git-sources \
+            "${@:2}"
+        ;;
+
+    preserved)
+        root_check
+        emerge_build -av @preserved-rebuild
+        ;;
+
+    wholeworld)
+        root_check
+
+        # Intentional exception: this is the only build path outside the
+        # Portage cgroup. A full world rebuild may use all CPUs because the
+        # machine is expected to be otherwise idle / running only TTYs.
+        schedtool -B -e /usr/bin/emerge \
+            -avuDeg \
+            --with-bdeps=y \
+            --usepkg=n \
+            --binpkg-changed-deps=n \
+            --keep-going=y \
+            @world \
+            --exclude="acct-group/* acct-user/* virtual/* app-eselect/* sys-kernel/* sys-firmware/* dev-python/* dev-java/* dev-ruby/* dev-perl/* dev-lua/* dev-php/* dev-tex/* dev-texlive/* x11-themes/* */*-bin"
+        ;;
+
+    search|se)
+        /usr/bin/emerge --search "${@:2}"
+        ;;
+
+    clean|rm)
+        root_check
+        /usr/bin/emerge -a --depclean "${@:2}"
+        ;;
+
+    checkclean)
+        /usr/bin/emerge -apv --depclean "${@:2}"
+        ;;
+
+    live)
+        root_check
+        emerge_build -av @live-rebuild
+        ;;
+
+    flatpaks)
+        flatpak update
+        ;;
+
+    kernel-live)
+        kernel_build live
+        ;;
+
+    kernel-gentoo)
+        kernel_build gentoo
+        ;;
+
+    kernel-llvm)
+        kernel_build llvm
+        ;;
+
+    kernel-git)
+        kernel_build git
+        ;;
+
+    kernel-server)
+        kernel_build server
+        ;;
+
+    clean-kernels)
+        root_check
+
+        echo "Relevant files in /boot:"
+        echo
+
+        command ls -1 \
+            /boot/System.map* \
+            /boot/initramfs* \
+            /boot/vmlinuz* 2>/dev/null
+
+        eclean-kernel -aA -L std
+        ;;
+
+    log)
+        grep -i --color=auto "completed" /var/log/emerge.log
+        echo "note: use 'date -d @[unixtime]' to convert the timestamp"
+        ;;
+
+    unlog)
+        grep -i --color=auto "unmerging" /var/log/emerge.log
+        echo "note: use 'date -d @[unixtime]' to convert the timestamp"
+        ;;
+
+    testify)
+        root_check
+
+        run_in_build_cgroup bash -c '
+            echo "PID: $$"
+            echo
+            echo "cgroup:"
+            cat /proc/$$/cgroup
+            echo
+            echo "allowed CPUs:"
+            grep Cpus_allowed_list /proc/$$/status
+            echo
+            echo "nproc:"
+            nproc
+        '
+        ;;
+
+    *)
+        cat <<'HELP'
+
+Currently available commands:
+
+sync | ref | refresh  forcibly synchronize all repositories
+check                 check for updates
+search | se           search packages
+all | daily           sync enabled repositories and update world
+world | dup           update world without repository sync
+wbdeps | wbd          update world including build dependencies
+pkg | in              install packages given as arguments
+skipkernel            update world except kernel packages
+
+live                   update all live packages
+flatpaks               update flatpaks
+
+wholeworld             rebuild everything from scratch using all CPUs
+
+kernel-live            build current kernel tree/config
+kernel-gentoo          build kernel flavor: gentoo
+kernel-llvm            build kernel flavor: llvm
+kernel-git             build kernel flavor: git
+kernel-server          build kernel flavor: server
+
+checkclean             check for orphans
+clean | rm             clean orphaned packages
+preserved              rebuild preserved libraries
+clean-kernels          remove old kernels
+
+log                    view recently emerged files
+unlog                  view recently unmerged files
+testify                show build cgroup placement
+
+HELP
+        ;;
+esac