diff --git a/bin/kiwi-cron b/bin/kiwi-cron index ce925f9..bbc3af9 100755 --- a/bin/kiwi-cron +++ b/bin/kiwi-cron @@ -1,5 +1,9 @@ #!/bin/sh -# replace crontab, run crond -/usr/local/libexec/kiwi-cron/schedule_dirs | crontab - +# replace crontab +/usr/local/libexec/kiwi-cron/schedule_dirs \ + | /usr/local/libexec/kiwi-cron/print_crontab \ + | crontab - + +# run crond exec crond -fd 8 \ No newline at end of file diff --git a/libexec/kiwi-cron/create_schedule b/libexec/kiwi-cron/create_schedule index 792b346..863b5b4 100755 --- a/libexec/kiwi-cron/create_schedule +++ b/libexec/kiwi-cron/create_schedule @@ -1,8 +1,5 @@ #!/bin/sh -this_script="$( readlink -f "${0}" )" -this_dir="${this_script%/*}" - cs_every="${1:-1}" cs_units="${2}" cs_command="${3}" @@ -36,27 +33,21 @@ cs_rand_month=$(( RANDOM % 2 + 1 )) case "${cs_units}" in minute) - "${this_dir}/print_cron_schedule" \ - "*${cs_every}" "*" "*" "*" "*" "${cs_command}" + echo "*${cs_every}" "*" "*" "*" "*" "${cs_command}" ;; hour) - "${this_dir}/print_cron_schedule" \ - "${cs_rand_min}" "*${cs_every}" "*" "*" "*" "${cs_command}" + echo "${cs_rand_min}" "*${cs_every}" "*" "*" "*" "${cs_command}" ;; day) - "${this_dir}/print_cron_schedule" \ - "${cs_rand_min}" "${cs_rand_hour}" "*${cs_every}" "*" "*" "${cs_command}" + echo "${cs_rand_min}" "${cs_rand_hour}" "*${cs_every}" "*" "*" "${cs_command}" ;; week) - "${this_dir}/print_cron_schedule" \ - "${cs_rand_min}" "${cs_rand_hour}" "*" "*" "${cs_rand_weekday}" "${cs_command}" + echo "${cs_rand_min}" "${cs_rand_hour}" "*" "*" "${cs_rand_weekday}" "${cs_command}" ;; month) - "${this_dir}/print_cron_schedule" \ - "${cs_rand_min}" "${cs_rand_hour}" "${cs_rand_day}" "*${cs_every}" "*" "${cs_command}" + echo "${cs_rand_min}" "${cs_rand_hour}" "${cs_rand_day}" "*${cs_every}" "*" "${cs_command}" ;; year) - "${this_dir}/print_cron_schedule" \ - "${cs_rand_min}" "${cs_rand_hour}" "${cs_rand_day}" "${cs_rand_month}" "*" "${cs_command}" + echo "${cs_rand_min}" "${cs_rand_hour}" "${cs_rand_day}" "${cs_rand_month}" "*" "${cs_command}" ;; esac diff --git a/libexec/kiwi-cron/print_cron_schedule b/libexec/kiwi-cron/print_cron_schedule deleted file mode 100755 index 10067c9..0000000 --- a/libexec/kiwi-cron/print_cron_schedule +++ /dev/null @@ -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}" diff --git a/libexec/kiwi-cron/print_crontab b/libexec/kiwi-cron/print_crontab index 13f4793..a2c6a29 100755 --- a/libexec/kiwi-cron/print_crontab +++ b/libexec/kiwi-cron/print_crontab @@ -1,2 +1,28 @@ #!/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 diff --git a/libexec/kiwi-cron/schedule_dirs b/libexec/kiwi-cron/schedule_dirs index 8214536..e9b79aa 100755 --- a/libexec/kiwi-cron/schedule_dirs +++ b/libexec/kiwi-cron/schedule_dirs @@ -3,17 +3,6 @@ this_script="$( readlink -f "${0}" )" 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 () { dhnf_directory="${1}" @@ -47,14 +36,6 @@ dir_to_unit () { 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 schedule_dirs="$( 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_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 # 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="${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 - -echo "${crontab}"