diff options
author | Patrick J Volkerding <volkerdi@slackware.com> | 2022-08-05 21:04:39 +0000 |
---|---|---|
committer | Eric Hameleers <alien@slackware.com> | 2022-08-06 07:00:16 +0200 |
commit | 6882ad89994efcb555332d32b9a76282e37018e3 (patch) | |
tree | 21159e2be99bbcab50c85b03bac93b5de44f448e /source/a/dcron | |
parent | ca27dc818b992f6deccc946ad7cae6b6e3b626cd (diff) | |
download | current-6882ad89994efcb555332d32b9a76282e37018e3.tar.gz |
Fri Aug 5 21:04:39 UTC 202220220805210439
a/dcron-4.5-x86_64-12.txz: Rebuilt.
Rebase the run-parts script on the latest version from Fedora's crontabs
package. Thanks to avian.
a/elilo-3.16-x86_64-13.txz: Rebuilt.
Patched to disable the Confidential Computing blob for SEV-SNP, which
fixes booting a 5.19 kernel with the EFI stub enabled. If you use elilo,
be sure to either run eliloconfig again or manually copy (and rename) the
proper elilo binary to your EFI System Partition.
Thanks to PiterPunk.
a/sysklogd-2.4.2-x86_64-1.txz: Upgraded.
ap/most-5.2.0-x86_64-1.txz: Upgraded.
d/cmake-3.24.0-x86_64-1.txz: Upgraded.
x/ibus-table-1.16.10-x86_64-1.txz: Upgraded.
extra/brltty/brltty-6.5-x86_64-1.txz: Upgraded.
extra/php80/php80-8.0.22-x86_64-1.txz: Upgraded.
Diffstat (limited to 'source/a/dcron')
-rwxr-xr-x | source/a/dcron/dcron.SlackBuild | 5 | ||||
-rw-r--r-- | source/a/dcron/run-parts | 120 | ||||
-rw-r--r-- | source/a/dcron/run-parts.8 | 48 | ||||
-rw-r--r-- | source/a/dcron/stub | 1 |
4 files changed, 135 insertions, 39 deletions
diff --git a/source/a/dcron/dcron.SlackBuild b/source/a/dcron/dcron.SlackBuild index b9da7dbf..cf5f9678 100755 --- a/source/a/dcron/dcron.SlackBuild +++ b/source/a/dcron/dcron.SlackBuild @@ -1,6 +1,6 @@ #!/bin/sh -# Copyright 2009, 2010, 2012, 2016, 2018 Patrick J. Volkerding, Sebeka, MN, USA +# Copyright 2009, 2010, 2012, 2016, 2018, 2022 Patrick J. Volkerding, Sebeka, MN, USA # All rights reserved. # # Redistribution and use of this script, with or without modification, is @@ -24,7 +24,7 @@ cd $(dirname $0) ; CWD=$(pwd) PKGNAM=dcron VERSION=${VERSION:-$(echo dcron-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} -BUILD=${BUILD:-11} +BUILD=${BUILD:-12} # Automatically determine the architecture we're building on: if [ -z "$ARCH" ]; then @@ -112,6 +112,7 @@ mkdir -p $PKG/usr/bin cat crontab > $PKG/usr/bin/crontab chmod 4711 $PKG/usr/bin/crontab +# Add run-parts script and man page, largely taken from Fedora: zcat $CWD/run-parts.gz > $PKG/usr/bin/run-parts chmod 0755 $PKG/usr/bin/run-parts diff --git a/source/a/dcron/run-parts b/source/a/dcron/run-parts index 65c778f3..c12ee353 100644 --- a/source/a/dcron/run-parts +++ b/source/a/dcron/run-parts @@ -1,46 +1,100 @@ -#!/bin/sh -# run-parts: Runs all the scripts found in a directory. +#!/bin/bash +# run-parts - concept taken from Debian # keep going when something fails set +e if [ $# -lt 1 ]; then - echo "Usage: run-parts <directory>" - exit 1 + echo "Usage: run-parts [--list | --test] <dir>" + exit 1 fi +while [ $# -gt 1 ]; do + case $1 in + --list) + list=1 + shift + break + ;; + --test) + test=1 + shift + break + ;; + --) + # -- end of options + shift + break + ;; + *) + # directory + break + ;; + esac +done + if [ ! -d $1 ]; then - echo "Not a directory: $1" - echo "Usage: run-parts <directory>" - exit 1 + echo "Not a directory: $1" + exit 1 +fi + +if [ -f /etc/default/run-parts ]; then + . /etc/default/run-parts fi -# There are several types of files that we would like to -# ignore automatically, as they are likely to be backups -# of other scripts: -IGNORE_SUFFIXES="~ ^ , .bak .new .rpmsave .rpmorig .rpmnew .swp" - -# Main loop: -for SCRIPT in $1/* ; do - # If this is not a regular file, skip it: - if [ ! -f $SCRIPT ]; then - continue - fi - # Determine if this file should be skipped by suffix: - SKIP=false - for SUFFIX in $IGNORE_SUFFIXES ; do - if [ ! "$(basename $SCRIPT $SUFFIX)" = "$(basename $SCRIPT)" ]; then - SKIP=true - break - fi - done - if [ "$SKIP" = "true" ]; then - continue - fi - # If we've made it this far, then run the script if it's executable: - if [ -x $SCRIPT ]; then - $SCRIPT || echo "$SCRIPT failed." - fi +# Ignore *~ and *, scripts +for i in $(LC_ALL=C; echo ${1%/}/*[^~,]) ; do + [ -d $i ] && continue + # Don't run *.{bak,new,rpmsave,rpmorig,rpmnew,swp,cfsaved} scripts + [ "${i%.bak}" != "${i}" ] && continue + [ "${i%.new}" != "${i}" ] && continue + [ "${i%.rpmsave}" != "${i}" ] && continue + [ "${i%.rpmorig}" != "${i}" ] && continue + [ "${i%.rpmnew}" != "${i}" ] && continue + [ "${i%.swp}" != "${i}" ] && continue + [ "${i%.cfsaved}" != "${i}" ] && continue + [ "${i%,v}" != "${i}" ] && continue + + # jobs.deny prevents specific files from being executed + # jobs.allow prohibits all non-named jobs from being run. + # can be used in conjunction but there's no reason to do so. + if [ -r $1/jobs.deny ]; then + grep -q "^$(basename $i)$" $1/jobs.deny && continue + fi + if [ -r $1/jobs.allow ]; then + grep -q "^$(basename $i)$" $1/jobs.allow || continue + fi + + if [ -e $i ]; then + if [ -r $1/whitelist ]; then + grep -q "^$(basename $i)$" $1/whitelist && continue + fi + + if [ ${list:-0} = 1 ]; then + echo $i; + elif [ -x $i ]; then + if [ ${test:-0} = 1 ]; then + echo $i; + continue + fi + if [ "$RANDOMIZE" != "" ]; then + let "rtime = $RANDOM" + if [ "$RANDOMTIME" != "" ]; then + let "rtime %= $RANDOMTIME" + else + let "rtime %= 300" + fi + sleep $rtime + fi + + # run executable files + logger -p cron.notice -t "run-parts[$$]" "($1) starting $(basename $i)" + $i 2>&1 | sed '1i\ +'"$i"':\ +' + logger -p cron.notice -t "run-parts[$$]" "($1) finished $(basename $i)" + fi + fi done exit 0 diff --git a/source/a/dcron/run-parts.8 b/source/a/dcron/run-parts.8 index 2d5e5f6a..74a55492 100644 --- a/source/a/dcron/run-parts.8 +++ b/source/a/dcron/run-parts.8 @@ -7,11 +7,11 @@ .ie \\n(.$=0:((0\\$1)*2u>(\\n(.lu-\\n(.iu)) .TP .el .TP "\\$1" .. -.TH RUN-PARTS 8 "14 Apr 2002" "Slackware Version 8.1.0 +.TH RUN-PARTS 8 "05 Aug 2022" "Slackware Version 15.1" .SH NAME run-parts \- run scripts found in a directory .SH SYNOPSIS -.B run-parts <directory> +.B run-parts [ --list | --test ] <directory> .LP .SH DESCRIPTION .B run-parts @@ -28,9 +28,49 @@ can be called once a day from root's crontab to run all the scripts found in automatically skips files with certain suffixes that are generally associated with backup or extra files. Any file that ends in one of these will be silently ignored: ~ ^ , .bak .new .rpmsave .rpmorig .rpmnew .swp + +The execution of files can be allowed or denied by creating file +.B jobs.allow +or +.B jobs.deny +which work similarly to other allow/deny config files. The file must be +created in the specified directory. + +Randomization of jobs can be configured in the +.IR /etc/default/run-parts +file. To enable randomization of jobs, set the RANDOMIZE parameter to 1 +and set the RANDOM parameter to an integer which determines a random +seed. Additionally, you may configure the RANDOMTIME parameter (again, +by specifying an integer) to provide an additional level of +randomization. Jobs are not randomized when the RANDOM and RANDOMTIME +parameters are set to 0. Values in these two parameters must be set to +1 or larger to provide a good enough randomization. + +Randomization of cron jobs can be useful for shared networks, where +multiple cron jobs executed at once can cause spikes in traffic, +especially during daily jobs. With randomized jobs, the workload is +evenly distributed throughout the day. + +.TP +.B --list +print names of all files (not limited to executables), but don't run +them. This option can't be used with +.B test +option. +.TP +.B --test +print names of files, which would be run. + +.SH EXAMPLE OF CONFIGURATION FILE +.nf +RANDOMIZE=1 +RANDOM=4 +RANDOMTIME=8 +.fi + .SH AUTHOR -Patrick J. Volkerding <volkerdi@slackware.com>, with ideas borrowed from the -Red Hat and Debian versions of this utility. +Written for Fedora by Marcela Ma■lá■ová, modified slightly for Slackware by +Patrick J. Volkerding <volkerdi@slackware.com>. .SH "SEE ALSO" .BR crond(8), .BR crontab(8). diff --git a/source/a/dcron/stub b/source/a/dcron/stub new file mode 100644 index 00000000..c33bafee --- /dev/null +++ b/source/a/dcron/stub @@ -0,0 +1 @@ +.TH CRONTABS 4 2012-08-29 "Marcela Mašláňová" "Crontabs users' Manual" |