maintain.bash 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. #!/bin/bash
  2. trap "shutdown" SIGHUP SIGINT SIGQUIT SIGABRT SIGALRM SIGTERM
  3. function shutdown {
  4. log "Interrupted."
  5. exit 0
  6. }
  7. sname=`basename "${0}"`
  8. basedir=`dirname "${0}"`
  9. cd "${basedir}/.."
  10. mycfgfp="../conf/my.conf"
  11. mastcfgfp="../conf/mustard.ini"
  12. mailcfgfp="../conf/mail.conf"
  13. forceresurrfp=".forceresurr"
  14. logfp="maintain.log"
  15. crlogfp="crawler.log"
  16. dbname=`cat "${mastcfgfp}" | grep -P '^db_name=' | sed -e 's/^db_name=//' -e 's/^"//' -e 's/"$//'`
  17. mailmta=`cat "${mailcfgfp}" | grep -P '^mta=' | sed -e 's/^mta=//' -e 's/^"//' -e 's/"$//'`
  18. mailfrom=`cat "${mailcfgfp}" | grep -P '^from=' | sed -e 's/^from=//' -e 's/^"//' -e 's/"$//'`
  19. mailto=`cat "${mailcfgfp}" | grep -P '^to=' | sed -e 's/^to=//' -e 's/^"//' -e 's/"$//'`
  20. function log {
  21. echo `date "+%Y-%m-%d %H:%M:%S.%N"` "${1}" >> "${logfp}"
  22. }
  23. # $1: comando; $2 file di log per stdout e stderr del comando
  24. function logcmd {
  25. log "Eseguo «${1}»..."
  26. $1 &>> $2
  27. ec=$?
  28. if [ "${ec}" == "0" ]; then
  29. log "Fatto, tutto ok :-)"
  30. else
  31. ok=0
  32. log "Errore: ${ec}."
  33. fi
  34. }
  35. [ -f "${logfp}" ] && rm "${logfp}"
  36. ok=1
  37. log "[[[ Inizio esecuzione ${sname} ]]]"
  38. #tar cJf run-`date +%Y-%m-%d--%H.%M.%S`.tar.xz run/
  39. buff=`ls -1 run/`
  40. [[ "${buff}" != "" ]] && logcmd "find run/ -type f -exec rm {} ;" "${logfp}"
  41. logcmd "php fedipact.php" "${logfp}"
  42. logcmd "php mustool.php updstats" "${logfp}"
  43. day=`date "+%d"`
  44. month=`date "+%m"`
  45. # il primo di ogni anno, oppure se esiste il file “.forceresurr”, usa un gracetime di 1000 anni
  46. if [[ "${day}" == "01" && "${month}" == "01" ]] || [[ -f "${forceresurrfp}" ]]; then
  47. log "Eseguo crawler.php con un gracetime di 1000 anni"
  48. logcmd "php crawler.php -g 1000y" "${crlogfp}"
  49. elif [[ "${day}" == "01" ]]; then # il primo di ogni mese che non è anche primo dell'anno usa un gracetime di 1 anno
  50. log "Eseguo crawler.php con un gracetime di 1 anno"
  51. logcmd "php crawler.php -g 1y" "${crlogfp}"
  52. else # ogni altro giorno usa il gracetime di default (30 giorni)
  53. log "Eseguo crawler.php con il gracetime di default (30 giorni)"
  54. logcmd "php crawler.php" "${crlogfp}"
  55. fi
  56. [[ -f "${forceresurrfp}" ]] && rm "${forceresurrfp}"
  57. logcmd "php mustool.php shuffle clean optimize" "${logfp}"
  58. ofp="maintain/backups/${dbname}_backup-`date +%Y-%m-%d--%H.%M.%S`.sql"
  59. logcmd "mysqldump --defaults-extra-file=${mycfgfp} --single-transaction -r ${ofp} ${dbname}" "${logfp}"
  60. if [[ "${ec}" != "0" ]]; then
  61. [[ -f "${ofp}" ]] && rm "${ofp}"
  62. else
  63. logcmd "xz -9 ${ofp}" "${logfp}"
  64. fi
  65. buff=`ls -1rt maintain/backups/${dbname}_backup-*.sql.xz | head -n -10`
  66. for fn in $buff; do rm "$fn"; done
  67. [[ $ok -eq 1 ]] && subj="maintain.bash: tutto ok :-)" || subj="maintain.bash: ci sono errori :-("
  68. body="[[[ ${logfp} ]]]\n\n"
  69. body+=`cat "${logfp}"`
  70. body+="\n\n[[[ Ultime 20 righe di ${crlogfp} ]]]\n\n"
  71. body+=`tail -n 20 "${crlogfp}"`
  72. echo -e "${body}" | s-nail -s "${subj}" -S v15-compat -S from="${mailfrom}" -S smtp-use-starttls -S mta="${mailmta}" "${mailto}"
  73. [[ $ok -eq 1 ]] && exit 0 || exit 1