#!/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}
Поскольку 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
, чтобы сделать случайную задержку глобальной по умолчанию.