Crontab run-parts

#!/bin/bash

# Here's the output from your command
output='"uptime": 3456,'

# Trim off the interesting bit
seconds="$(echo "${output}" | awk '{ print $2 }' | sed -e 's/,.*//')"

readonly SECONDS_PER_HOUR=3600
readonly SECONDS_PER_MINUTE=60

hours=$((${seconds} / ${SECONDS_PER_HOUR}))
seconds=$((${seconds} % ${SECONDS_PER_HOUR}))
minutes=$((${seconds} / ${SECONDS_PER_MINUTE}))
seconds=$((${seconds} % ${SECONDS_PER_MINUTE}))

printf "%02d:%02d:%02d\n" ${hours} ${minutes} ${seconds}
2
15.07.2018, 09:15
1 ответ

Поскольку run-parts очень близки к тому, что вы хотите, вы можете сделать копию run-parts и изменить ее, чтобы сделать ее именно такой, какой вы хотите.

Например:

# cp -a /usr/bin/run-parts /usr/local/bin/run-parts-parallel

Затем добавьте '&' после последнего 'fi' в / usr / local / bin / run-parts-parallel, как вы можете видеть в этом различии:

# diff -u /usr/bin/run-parts /usr/local/bin/run-parts-parallel 
--- /usr/bin/run-parts  2014-06-09 18:14:31.000000000 -0400
+++ /usr/local/bin/run-parts-parallel   2017-02-03 14:55:11.327000000 -0500
@@ -95,7 +95,7 @@
               { print; }'
        logger -i -p cron.notice -t "run-parts($1)" "finished $(basename $i)"
    fi
-   fi
+   fi &
 done

 exit 0

Затем вы можете изменить строка в / etc / cron.d / 0hourly от:

01 * * * * root run-parts /etc/cron.hourly

до

01 * * * * root RANDOMIZE=1 RANDOMTIME=300 /usr/local/run-parts-parallel /etc/cron.hourly

Сценарий также можно изменить, чтобы использовать / etc / sysconfig / run-parts-parallel для установки переменных RANDOM * и удаления их из crontab файл. Или, если вы не используете run-parts где-либо еще, вы можете поместить переменные RANDOM * в / etc / sysconfig / run-parts , чтобы сделать случайную задержку глобальной по умолчанию.

4
27.01.2020, 21:59

Теги

Похожие вопросы