From 3e079e2ec51641d9d421e62ed77dc4944ca81f1c Mon Sep 17 00:00:00 2001 From: mag37 Date: Mon, 24 Feb 2025 21:49:19 +0100 Subject: [PATCH] Update dockcheck.sh Added MaxAsync variable. Added POSIX xargs check. Rewrote Excludes. --- dockcheck.sh | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/dockcheck.sh b/dockcheck.sh index 462e7e6..087138d 100755 --- a/dockcheck.sh +++ b/dockcheck.sh @@ -46,6 +46,7 @@ c_blue="\033[0;34m" c_teal="\033[0;36m" c_reset="\033[0m" +MaxAsync=32 Timeout=10 Stopped="" while getopts "aynpfrhlisvmc:e:d:t:" options; do @@ -285,13 +286,12 @@ fi check_image() { i="$1" local Excludes=($Excludes_string) - local skip - for e in "${Excludes[@]}" ; do [[ "$i" == "$e" ]] && skip=1 ; done - - if [[ $skip -eq 1 ]]; then - echo Skip $i - return - fi + for e in "${Excludes[@]}" ; do + if [[ "$i" == "$e" ]]; then + echo Skip $i + return + fi + done local NoUpdates GotUpdates GotErrors ImageId=$(docker inspect "$i" --format='{{.Image}}') @@ -320,6 +320,14 @@ export -f check_image datecheck export Excludes_string="${Excludes[@]}" # Can only export scalar variables export t_out regbin RepoUrl DaysOld +# Check for POSIX xargs with -P option, fallback without async +if (echo "test" | xargs -P 10 >/dev/null 2>&1) ; then + XargsAsync="-P $MaxAsync" +else + XargsAsync="" + printf "%bMissing POSIX xargs, consider installing 'findutils' for asynchronous lookups.%b\n" "$c_red" "$c_reset" +fi + # Asynchronously check the image-hash of every running container VS the registry while read -r line; do ((RegCheckQue+=1)) @@ -337,7 +345,7 @@ while read -r line; do esac done < <( \ docker ps $Stopped --filter "name=$SearchName" --format '{{.Names}}' | \ - xargs -P 32 -I {} bash -c 'check_image "{}"' \ + xargs ${XargsAsync} -I {} bash -c 'check_image "{}"' \ ) # Sort arrays alphabetically