1
0
Fork 0
mirror of https://github.com/yavook/kiwi-cron.git synced 2024-11-21 23:13:00 +00:00

modularity

This commit is contained in:
Jörn-Michael Miehe 2022-03-01 17:57:56 +01:00
parent 965dc71dbf
commit 718ddec618
5 changed files with 40 additions and 55 deletions

View file

@ -1,5 +1,9 @@
#!/bin/sh #!/bin/sh
# replace crontab, run crond # replace crontab
/usr/local/libexec/kiwi-cron/schedule_dirs | crontab - /usr/local/libexec/kiwi-cron/schedule_dirs \
| /usr/local/libexec/kiwi-cron/print_crontab \
| crontab -
# run crond
exec crond -fd 8 exec crond -fd 8

View file

@ -1,8 +1,5 @@
#!/bin/sh #!/bin/sh
this_script="$( readlink -f "${0}" )"
this_dir="${this_script%/*}"
cs_every="${1:-1}" cs_every="${1:-1}"
cs_units="${2}" cs_units="${2}"
cs_command="${3}" cs_command="${3}"
@ -36,27 +33,21 @@ cs_rand_month=$(( RANDOM % 2 + 1 ))
case "${cs_units}" in case "${cs_units}" in
minute) minute)
"${this_dir}/print_cron_schedule" \ echo "*${cs_every}" "*" "*" "*" "*" "${cs_command}"
"*${cs_every}" "*" "*" "*" "*" "${cs_command}"
;; ;;
hour) hour)
"${this_dir}/print_cron_schedule" \ echo "${cs_rand_min}" "*${cs_every}" "*" "*" "*" "${cs_command}"
"${cs_rand_min}" "*${cs_every}" "*" "*" "*" "${cs_command}"
;; ;;
day) day)
"${this_dir}/print_cron_schedule" \ echo "${cs_rand_min}" "${cs_rand_hour}" "*${cs_every}" "*" "*" "${cs_command}"
"${cs_rand_min}" "${cs_rand_hour}" "*${cs_every}" "*" "*" "${cs_command}"
;; ;;
week) week)
"${this_dir}/print_cron_schedule" \ echo "${cs_rand_min}" "${cs_rand_hour}" "*" "*" "${cs_rand_weekday}" "${cs_command}"
"${cs_rand_min}" "${cs_rand_hour}" "*" "*" "${cs_rand_weekday}" "${cs_command}"
;; ;;
month) month)
"${this_dir}/print_cron_schedule" \ echo "${cs_rand_min}" "${cs_rand_hour}" "${cs_rand_day}" "*${cs_every}" "*" "${cs_command}"
"${cs_rand_min}" "${cs_rand_hour}" "${cs_rand_day}" "*${cs_every}" "*" "${cs_command}"
;; ;;
year) year)
"${this_dir}/print_cron_schedule" \ echo "${cs_rand_min}" "${cs_rand_hour}" "${cs_rand_day}" "${cs_rand_month}" "*" "${cs_command}"
"${cs_rand_min}" "${cs_rand_hour}" "${cs_rand_day}" "${cs_rand_month}" "*" "${cs_command}"
;; ;;
esac esac

View file

@ -1,11 +0,0 @@
#!/bin/sh
pcs_minute="${1}"
pcs_hour="${2}"
pcs_day="${3}"
pcs_month="${4}"
pcs_weekday="${5}"
pcs_command="${6}"
printf '%-8s%-8s%-8s%-8s%-8s%s\n' \
"${pcs_minute}" "${pcs_hour}" "${pcs_day}" "${pcs_month}" "${pcs_weekday}" "${pcs_command}"

View file

@ -1,2 +1,28 @@
#!/bin/sh #!/bin/sh
print_cron_schedule () {
pcs_minute="${1}"
pcs_hour="${2}"
pcs_day="${3}"
pcs_month="${4}"
pcs_weekday="${5}"
pcs_command="${6}"
printf '%-8s%-8s%-8s%-8s%-8s%s\n' \
"${pcs_minute}" "${pcs_hour}" "${pcs_day}" "${pcs_month}" "${pcs_weekday}" "${pcs_command}"
}
# header
echo '# crontab generated by kiwi-cron'
echo '# generation time: '"$(date)"
echo '#'
# short documentation line
print_cron_schedule \
"# min" "hour" "day" "month" "weekday" "command"
# schedules
while read -r pc_min pc_hour pc_day pc_month pc_weekday pc_command; do
print_cron_schedule \
"${pc_min}" "${pc_hour}" "${pc_day}" "${pc_month}" "${pc_weekday}" "${pc_command}"
done

View file

@ -3,17 +3,6 @@
this_script="$( readlink -f "${0}" )" this_script="$( readlink -f "${0}" )"
this_dir="${this_script%/*}" this_dir="${this_script%/*}"
crontab=''
crontab_line () {
if [ -z "${crontab}" ]; then
crontab="${1}"
else
crontab="$(
printf '%s\n%s' "${crontab}" "${1}";
)"
fi
}
dir_has_no_files () { dir_has_no_files () {
dhnf_directory="${1}" dhnf_directory="${1}"
@ -47,14 +36,6 @@ dir_to_unit () {
esac esac
} }
crontab_line '# crontab generated by kiwi-cron'
crontab_line '# generation time: '"$(date)"
crontab_line '#'
crontab_line "$(
"${this_dir}/print_cron_schedule" \
"# min" "hour" "day" "month" "weekday" "command"
)"
# check *ly dirs in "/kiwi-cron" directory # check *ly dirs in "/kiwi-cron" directory
schedule_dirs="$( schedule_dirs="$(
find "/kiwi-cron" -type d -name "*ly" -mindepth 1 -maxdepth 1 find "/kiwi-cron" -type d -name "*ly" -mindepth 1 -maxdepth 1
@ -71,9 +52,7 @@ for schedule_dir in ${schedule_dirs}; do
units="${dir_name%ly}" units="${dir_name%ly}"
units="$( dir_to_unit "${units}" )" units="$( dir_to_unit "${units}" )"
crontab_line "$(
"${this_dir}/create_schedule" "1" "${units}" "run-parts '${schedule_dir}'" "${this_dir}/create_schedule" "1" "${units}" "run-parts '${schedule_dir}'"
)"
done done
# check dirs in "/kiwi-cron/every" directory # check dirs in "/kiwi-cron/every" directory
@ -93,9 +72,5 @@ for schedule_dir in ${every_schedule_dirs}; do
units="$( echo "${dir_name}" | awk -F_ '{print $2}' )" units="$( echo "${dir_name}" | awk -F_ '{print $2}' )"
units="${units%s}" units="${units%s}"
crontab_line "$(
"${this_dir}/create_schedule" "${every}" "${units}" "run-parts '${schedule_dir}'" "${this_dir}/create_schedule" "${every}" "${units}" "run-parts '${schedule_dir}'"
)"
done done
echo "${crontab}"