logs.sh 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. #!/bin/bash
  2. # LGSM logs.sh function
  3. # Author: Daniel Gibbs
  4. # Contributor: UltimateByte
  5. # Website: http://gameservermanagers.com
  6. lgsm_version="230216"
  7. # Description: Acts as a log rotater, removing old logs.
  8. local modulename="Log Manager"
  9. # Check if logfile variable and file exist, create logfile if it doesn't exist
  10. if [ -n "${consolelog}" ]; then
  11. if [ ! -e "${consolelog}" ]; then
  12. touch "${consolelog}"
  13. fi
  14. fi
  15. # For games not displaying a console, and having logs into their game folder
  16. if [ -n "${gamelogfile}" ]; then
  17. if [ -n "$(find "${systemdir}" -name "gamelog*.log")" ]; then
  18. fn_printinfo "Moving game logs to ${gamelogdir}"
  19. fn_scriptlog "Moving game logs to ${gamelogdir}"
  20. echo -en "\n"
  21. sleep 1
  22. mv "${systemdir}"/gamelog*.log "${gamelogdir}"
  23. fi
  24. fi
  25. # Log manager will start the cleanup if it finds logs older than "${logdays}"
  26. if [ $(find "${scriptlogdir}"/ -type f -mtime +"${logdays}"|wc -l) -ne "0" ]; then
  27. fn_printdots "Starting"
  28. # Set addon logs directories
  29. sourcemodlogdir="${systemdir}/addons/sourcemod/logs"
  30. ulxlogdir="${systemdir}/data/ulx_logs"
  31. darkrplogdir="${systemdir}/data/darkrp_logs"
  32. legacyserverlogdir="${rootdir}/log/server"
  33. # Setting up counting variables
  34. scriptcount="0" ; consolecount="0" ; gamecount="0" ; srcdscount="0" ; smcount="0" ; ulxcount="0" ; darkrpcount="0" ; legacycount="0"
  35. sleep 1
  36. fn_printok "Starting"
  37. fn_scriptlog "Starting"
  38. sleep 1
  39. echo -en "\n"
  40. fn_printinfo "Removing logs older than "${logdays}" days"
  41. fn_scriptlog "Removing logs older than "${logdays}" days"
  42. sleep 1
  43. echo -en "\n"
  44. # Logging logfiles to be removed according to "${logdays}", counting and removing them
  45. # Script logfiles
  46. find "${scriptlogdir}"/ -type f -mtime +"${logdays}"|tee >> "${scriptlog}"
  47. scriptcount=$(find "${scriptlogdir}"/ -type f -mtime +"${logdays}"|wc -l)
  48. find "${scriptlogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \;
  49. # SRCDS and unreal logfiles
  50. if [ "${engine}" == "unreal2" ]||[ "${engine}" == "source" ]; then
  51. find "${gamelogdir}"/ -type f -mtime +"${logdays}"|tee >> "${scriptlog}"
  52. gamecount=$(find "${gamelogdir}"/ -type f -mtime +"${logdays}"|wc -l)
  53. find "${gamelogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \;
  54. fi
  55. # Console logfiles
  56. if [ -n "${consolelog}" ]; then
  57. find "${consolelogdir}"/ -type f -mtime +"${logdays}"|tee >> "${scriptlog}"
  58. consolecount=$(find "${consolelogdir}"/ -type f -mtime +"${logdays}"|wc -l)
  59. find "${consolelogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \;
  60. fi
  61. # Source addons logfiles
  62. if [ "${engine}" == "source" ]; then
  63. # SourceMod logfiles
  64. if [ -d "${sourcemodlogdir}" ]; then
  65. find "${sourcemodlogdir}"/ -type f -mtime +"${logdays}"|tee >> "${scriptlog}"
  66. smcount=$(find "${sourcemodlogdir}"/ -type f -mtime +"${logdays}"|wc -l)
  67. find "${sourcemodlogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \;
  68. fi
  69. # Garry's Mod logfiles
  70. if [ "${gamename}" == "Garry's Mod" ]; then
  71. # ULX logfiles
  72. if [ -d "${ulxlogdir}" ]; then
  73. find "${ulxlogdir}"/ -type f -mtime +"${logdays}"|tee >> "${scriptlog}"
  74. ulxcount=$(find "${ulxlogdir}"/ -type f -mtime +"${logdays}"|wc -l)
  75. find "${ulxlogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \;
  76. fi
  77. # DarkRP logfiles
  78. if [ -d "${darkrplogdir}" ]; then
  79. find "${darkrplogdir}"/ -type f -mtime +"${logdays}"|tee >> "${scriptlog}"
  80. darkrpcount=$(find "${darkrplogdir}"/ -type f -mtime +"${logdays}"|wc -l)
  81. find "${darkrplogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \;
  82. fi
  83. fi
  84. fi
  85. # Legacy support
  86. if [ -d "${legacyserverlogdir}" ]; then
  87. find "${legacyserverlogdir}"/ -type f -mtime +"${logdays}"|tee >> "${scriptlog}"
  88. legacycount=$(find "${legacyserverlogdir}"/ -type f -mtime +"${logdays}"|wc -l)
  89. find "${legacyserverlogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \;
  90. # Remove folder if empty
  91. if [ ! "$(ls -A "${legacyserverlogdir}")" ]; then
  92. rm -rf "${legacyserverlogdir}"
  93. fi
  94. fi
  95. # Count total amount of files removed
  96. count=$((${scriptcount} + ${consolecount} + ${gamecount} + ${srcdscount} + ${smcount} + ${ulxcount} + ${darkrpcount} + ${legacycount}))
  97. # Job done
  98. fn_printok "Removed ${count} log files"
  99. fn_scriptlog "Removed ${count} log files"
  100. sleep 1
  101. echo -en "\n"
  102. fi