#!/bin/bash # Copyright 2025 by Alexei Bezborodov # License: Public domain: http://unlicense.org/ # Общественное достояние [ "${alias_dir}" = "" ] && alias_dir=$(pwd) source "${alias_dir}/common" crontab_edit() { sudo_=$1 EDITOR=mcedit $sudo_ crontab -e } mkalias_with_prefix 'crontab_edit' crontab_edit_sudo() { crontab_edit sudo } mkalias_with_prefix 'crontab_edit_sudo' crontab_print() { sudo_=$1 $sudo_ crontab -l } mkalias_with_prefix 'crontab_print' crontab_add_silence() { cmd=$1 sudo_=$2 $sudo_ crontab -l | { cat; echo "${cmd}"; } | $sudo_ crontab - } mkalias_with_prefix 'crontab_add_silence' crontab_add() { cron_help=' #minute (0-59), #|<---->hour (0-23), #|<---->|<----->day of the month (1-31), #|<---->|<----->|<----->mfreqonth of the year (1-12), #|<---->|<----->|<----->|<----->day of the week (0-6 with 0=Sunday). #|<---->|<----->|<----->|<----->|<----->commands Примеры Cron заданий Запускать команду в 15:00 каждый день с понедельника по пятницу: 0 15 * * 1-5 command Запускать скрипт каждые 5 минут: MAILTO=email@example.com */5 * * * * sh /path/to/script.sh > /dev/null Запускать сценарий в первый понедельник каждого месяца в 7 часов утра: 0 7 1-7 * 1 bash -c "echo $(date) >> /home/run.log" @yearly (или @annually) - запускать задание один раз в год в полночь (12:00) 1 января. Эквивалент 0 0 1 1 *. @monthly - запускать заданное задание один раз в месяц в полночь первого дня месяца. Эквивалент 0 0 1 * *. @weekly - запускать задание раз в неделю в полночь воскресенья. Эквивалент 0 0 * * 0. @daily - запускать задание один раз в день в полночь. Эквивалент 0 0 * * *. @hourly - запускать заданную задачу один раз в час в начале часа. Эквивалент 0 * * * *. @reboot - Запустить указанное задание при запуске системы (время загрузки). ' cmd="$1" sudo_=$2 [[ "$cmd" == "" ]] && printf "Укажите команду, например 'crontab_add \"00 09 * * 1-5 echo hello\"}' ${cron_help}\n" && return printf "Добавляем команду '${cmd}'\n" ask_continue && return crontab_add_silence "$cmd" "$sudo_" printf "Получившийся кронтаб:\n" crontab_print "$sudo_" } mkalias_with_prefix 'crontab_add'