function apt-get-latest(){
set -- "${@:1:1}" "$(apt-cache-search-latest $2)" "${@:3}"
sudo apt-get "$@"
}
function apt-cache-search-versions(){
pkg="$1"
prefix=${pkg%\**}
suffix=${pkg#*\*}
echo "$(apt-cache search --names-only "^$prefix*" | awk '{ print $1 }' | sort | grep -P ^$prefix'(\d+\.)?(\d+\.)?(\d+|)'$suffix$)"
}
function apt-cache-search-latest(){
echo "$(apt-cache-search-versions $1 | tail -1)"
}
Использование
sudo add-apt-repository ppa:webupd8team/java -y
sudo add-apt-repository ppa:ondrej/php -y
sudo apt-get update
apt-cache-search-versions php*-fpm
=> php5.6-fpm php7.0-fpm php7.1-fpm php-fpm
apt-cache-search-versions oracle-java*-installer
=> oracle-java6-installer oracle-java7-installer oracle-java8-installer oracle-java9-installer
apt-cache-search-latest php*-fpm
=> php-fpm
apt-cache-search-latest oracle-java*-installer
=> oracle-java9-installer
apt-get-latest install php*-fpm
apt-get-latest install oracle-java*-installer
Для запуска сценария 2 раза в день:
0 0,12 * * * sleep $(( $$ \% 21600 )); /path/to/script.sh
Это запустит задание в полдень и полночь, затем поспите до 6 часов (половина 12-часового интервала) перед запуском сценария.
Запуск сценария 3 раза в день:
0 0,8,16 * * * sleep $(( $$ \% 14400 )); /path/to/script.sh
Это запустит задание в полночь, 8:00 и 16:00, а затем засыпает до 4 часов (половина 8-часового интервала) перед запуском сценария.
Поскольку вы пометили это с помощью Ubuntu, вероятно, у вас есть bash по умолчанию / bin / sh, который, кажется, интерпретирует $ RANDOM (несмотря на то, что RANDOM не указан в POSIX), поэтому для дополнительной непредсказуемости измените ответ Zwans на:
2 запуска в день:
0 0,12 * * * sleep $(( RANDOM \% 21600 )); /path/to/script.sh
3 запуска в день:
0 0,8,16 * * * sleep $(( RANDOM \% 14400 )); /path/to/script.sh
Я изменил &&
на ;
, что меняет значение с «ждать, пока команда сна не завершится успешно. "чтобы" поспать какое-то время, затем независимо от того, завершился ли сон или был прекращен ". Также обратите внимание, что %
необходимо экранировать , когда он является частью команды cron, в противном случае он интерпретируется как перевод строки.
0 * / 12 * * * sleep $ ((RANDOM% x)) && / bin / sh -c /path/to/script.sh
Ваша задержка будет между 0 и x
, поэтому установите это значение самостоятельно. Это должно выполняться каждые 12 часов со случайной задержкой.
Убедитесь, что это выполняется с помощью bash
.