SMOLNET PORTAL home about changes
ilawn-hark: Parallelization using xargs(1). - gopher-lawn - The gopher lawn gopher directory project.	Err	bitreich.org	70
hgit clone git://bitreich.org/gopher-lawn/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/gopher-lawn/	URL:git://bitreich.org/gopher-lawn/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/gopher-lawn/	bitreich.org	70
1Log	/scm/gopher-lawn/log.gph	bitreich.org	70
1Files	/scm/gopher-lawn/files.gph	bitreich.org	70
1Refs	/scm/gopher-lawn/refs.gph	bitreich.org	70
1Tags	/scm/gopher-lawn/tag	bitreich.org	70
i---	Err	bitreich.org	70
1commit e3cc5279072ddbee7f2d58152732c759a9ede582	/scm/gopher-lawn/commit/e3cc5279072ddbee7f2d58152732c759a9ede582.gph	bitreich.org	70
1parent b9a49018389fa0126149e3cbef3ecdef4defe6ef	/scm/gopher-lawn/commit/b9a49018389fa0126149e3cbef3ecdef4defe6ef.gph	bitreich.org	70
hAuthor: Julian Schweinsberg <pazz0@0xfa.de>	URL:mailto:pazz0@0xfa.de	bitreich.org	70
iDate:   Tue, 19 Dec 2023 20:25:02 +0100	Err	bitreich.org	70
i	Err	bitreich.org	70
ilawn-hark: Parallelization using xargs(1).	Err	bitreich.org	70
i	Err	bitreich.org	70
iSigned-off-by: Christoph Lohmann <20h@r-36.net>	Err	bitreich.org	70
i	Err	bitreich.org	70
iDiffstat:	Err	bitreich.org	70
i  M lawn-hark/lawn-hark.sh              |      73 +++++++++++++++++--------------	Err	bitreich.org	70
i	Err	bitreich.org	70
i1 file changed, 41 insertions(+), 32 deletions(-)	Err	bitreich.org	70
i---	Err	bitreich.org	70
1diff --git a/lawn-hark/lawn-hark.sh b/lawn-hark/lawn-hark.sh	/scm/gopher-lawn/file/lawn-hark/lawn-hark.sh.gph	bitreich.org	70
i@@ -5,6 +5,7 @@	Err	bitreich.org	70
i 	Err	bitreich.org	70
i errorthreshold=3	Err	bitreich.org	70
i timeout=15	Err	bitreich.org	70
i+maxworkers=8	Err	bitreich.org	70
i onionsocksproxy="127.0.0.1:9050"	Err	bitreich.org	70
i 	Err	bitreich.org	70
i function tcpdial() {	Err	bitreich.org	70
i@@ -95,26 +96,14 @@ function checkraw() {	Err	bitreich.org	70
i         return 0	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-checktime="$(date +%s)" 	Err	bitreich.org	70
i-statedir="$1"	Err	bitreich.org	70
i+program="$(readlink -f "$0")"	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-if [ -z "${statedir}" ];	Err	bitreich.org	70
i+if [ "${LAWNHARK_WORKER}" = "1" ];	Err	bitreich.org	70
i then	Err	bitreich.org	70
i-        printf "You need to specify a state dir.\n" >&2	Err	bitreich.org	70
i-        exit 1	Err	bitreich.org	70
i-fi	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-mkdir -p "${statedir}"	Err	bitreich.org	70
i-if [ ! -d "${statedir}" ];	Err	bitreich.org	70
i-then	Err	bitreich.org	70
i-        printf "%s is not a directory! Aborting.\n" "${statedir}" >&2	Err	bitreich.org	70
i-        exit 1	Err	bitreich.org	70
i-fi	Err	bitreich.org	70
i+        statedir="$1"	Err	bitreich.org	70
i+        checktime="$2"	Err	bitreich.org	70
i+        f="$3"	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-shift	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-for f;	Err	bitreich.org	70
i-do	Err	bitreich.org	70
i         type=""	Err	bitreich.org	70
i         selector=""	Err	bitreich.org	70
i         host=""	Err	bitreich.org	70
i@@ -145,12 +134,10 @@ do	Err	bitreich.org	70
i                 || [ -z "${host}" ] \	Err	bitreich.org	70
i                 || [ -z "${port}" ];	Err	bitreich.org	70
i         then	Err	bitreich.org	70
i-                printf "ERROR\t%s\tInvalid entry!\n" "${f}" >&2	Err	bitreich.org	70
i-                continue	Err	bitreich.org	70
i+                flock -x "${program}" printf "ERROR\t%s\tInvalid entry!\n" "${f}" >&2	Err	bitreich.org	70
i+                exit	Err	bitreich.org	70
i         fi	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        #printf "DEBUG\t%s\tchecking\t%s\t%s\t%s\t%s\n" "${f}" "${type}" "${selector}" "${host}" "${port}"	Err	bitreich.org	70
i-	Err	bitreich.org	70
i         case "${type}" in	Err	bitreich.org	70
i         cso )	Err	bitreich.org	70
i                 error="$(checkcso "${host}" "${port}")"	Err	bitreich.org	70
i@@ -182,8 +169,8 @@ do	Err	bitreich.org	70
i                                 error="$(checkraw "${sshhost}" "${sshport}")"	Err	bitreich.org	70
i                                 ;;	Err	bitreich.org	70
i                         * )	Err	bitreich.org	70
i-                                printf "TODO\t%s\tCan't handle %s\n" "${f}" "${url}"	Err	bitreich.org	70
i-                                continue	Err	bitreich.org	70
i+                                flock -x "${program}" printf "TODO\t%s\tCan't handle %s\n" "${f}" "${url}" >&2	Err	bitreich.org	70
i+                                exit	Err	bitreich.org	70
i                                 ;;	Err	bitreich.org	70
i                         esac	Err	bitreich.org	70
i                 else	Err	bitreich.org	70
i@@ -215,20 +202,42 @@ do	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         if [ ${errorcount} -ge ${errorthreshold} ];	Err	bitreich.org	70
i         then	Err	bitreich.org	70
i-                printf "ERROR\t%s\t%s\n" "${f}" "${error}" >&2	Err	bitreich.org	70
i+                flock -x "${program}" printf "ERROR\t%s\t%s\n" "${f}" "${error}" >&2	Err	bitreich.org	70
i         fi	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         printf "%s\t%s\n" "${checktime}" "${errorcount}" > "${statefile}"	Err	bitreich.org	70
i-done	Err	bitreich.org	70
i+else	Err	bitreich.org	70
i+        checktime="$(date +%s)" 	Err	bitreich.org	70
i+        statedir="$1"	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-# garbage collection	Err	bitreich.org	70
i-find "${statedir}" -type f | while read -r f;	Err	bitreich.org	70
i-do	Err	bitreich.org	70
i-        IFS="        " read -r lastcheck errorcount < "${f}"	Err	bitreich.org	70
i+        if [ -z "${statedir}" ];	Err	bitreich.org	70
i+        then	Err	bitreich.org	70
i+                printf "You need to specify a state dir.\n" >&2	Err	bitreich.org	70
i+                exit 1	Err	bitreich.org	70
i+        fi	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        if [ ${lastcheck} -ne ${checktime} ];	Err	bitreich.org	70
i+        mkdir -p "${statedir}"	Err	bitreich.org	70
i+        if [ ! -d "${statedir}" ];	Err	bitreich.org	70
i         then	Err	bitreich.org	70
i-                rm -f "${f}"	Err	bitreich.org	70
i+                printf "%s is not a directory! Aborting.\n" "${statedir}" >&2	Err	bitreich.org	70
i+                exit 1	Err	bitreich.org	70
i         fi	Err	bitreich.org	70
i-done	Err	bitreich.org	70
i 	Err	bitreich.org	70
i+        shift	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        for f;	Err	bitreich.org	70
i+        do	Err	bitreich.org	70
i+                printf "%s\0" "${f}"	Err	bitreich.org	70
i+        done | LAWNHARK_WORKER=1 xargs -r -0 -P "${maxworkers}" -L1 "${program}" "${statedir}" "${checktime}"	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        # garbage collection	Err	bitreich.org	70
i+        find "${statedir}" -type f | while read -r f;	Err	bitreich.org	70
i+        do	Err	bitreich.org	70
i+                IFS="        " read -r lastcheck errorcount < "${f}"	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+                if [ ${lastcheck} -ne ${checktime} ];	Err	bitreich.org	70
i+                then	Err	bitreich.org	70
i+                        rm -f "${f}"	Err	bitreich.org	70
i+                fi	Err	bitreich.org	70
i+        done	Err	bitreich.org	70
i+fi	Err	bitreich.org	70
.
Response: text/plain
Original URLgopher://bitreich.org/0/scm/gopher-lawn/commit/e3cc527907...
Content-Typetext/plain; charset=utf-8