@ -13,13 +13,10 @@ fn_firstcommand_set
fn_monitor_check_lockfile( ) {
# Monitor does not run if lockfile is not found.
if [ ! -f " ${ lockdir } / ${ selfname } .lock " ] ; then
if [ ! -f " ${ lockdir } / ${ selfname } -start .lock" ] ; then
fn_print_dots "Checking lockfile: "
fn_print_checking_eol
fn_script_log_info "Checking lockfile: CHECKING"
fn_monitor_check_update
fn_monitor_check_backup
fn_monitor_check_debug
fn_print_error "Checking lockfile: No lockfile found: "
fn_print_error_eol_nl
fn_script_log_error "Checking lockfile: No lockfile found: ERROR"
@ -28,62 +25,92 @@ fn_monitor_check_lockfile() {
fi
# Fix if lockfile is not unix time or contains letters
if [ -f " ${ lockdir } / ${ selfname } .lock " ] && [ [ " $( head -n 1 " ${ lockdir } / ${ selfname } .lock " ) " = ~ [ A-Za-z] ] ] ; then
date '+%s' > " ${ lockdir } / ${ selfname } .lock "
echo " ${ version } " >> " ${ lockdir } / ${ selfname } .lock "
echo " ${ port } " >> " ${ lockdir } / ${ selfname } .lock "
if [ -f " ${ lockdir } / ${ selfname } -start .lock" ] && [ [ " $( head -n 1 " ${ lockdir } / ${ selfname } -start .lock" ) " = ~ [ A-Za-z] ] ] ; then
date '+%s' > " ${ lockdir } / ${ selfname } -start .lock"
echo " ${ version } " >> " ${ lockdir } / ${ selfname } -start .lock"
echo " ${ port } " >> " ${ lockdir } / ${ selfname } -start .lock"
fi
}
fn_monitor_check_backup( ) {
# Monitor will check if backup is running.
if [ " $( pgrep " ${ selfname } backup " | wc -l) " != "0" ] || [ " $( pgrep " ${ selfname } b " | wc -l) " != "0" ] ; then
fn_print_info "Checking lockfile: LinuxGSM is currently running a backup: "
fn_monitor_check_install( ) {
# Monitor will check if update is running.
if [ " $( pgrep -fc -u " ${ USER } " " ${ selfname } install " ) " != "0" ] || [ " $( pgrep -fc -u " ${ USER } " " ${ selfname } i " ) " != "0" ] || [ " $( pgrep -fc -u " ${ USER } " " ${ selfname } auto-install " ) " != "0" ] || [ " $( pgrep -fc -u " ${ USER } " " ${ selfname } ai " ) " != "0" ] ; then
fn_print_dots "Checking for installer: "
fn_print_checking_eol
fn_script_log_info "Checking for installer: CHECKING"
fn_print_info "Checking for installer: LinuxGSM is currently installing: "
fn_print_info_eol
fn_script_log_info "Checking lockfile: LinuxGSM is currently running a backup"
fn_script_log_pass "Checking for installer: LinuxGSM is currently installing "
core_exit.sh
fi
}
fn_monitor_check_debug( ) {
# Monitor will check if backup is running.
if [ " $( pgrep -fc " ${ selfname } backup " ) " != "0" ] || [ " $( pgrep -fc " ${ selfname } b " ) " != "0" ] ; then
fn_print_info "Checking lockfile : LinuxGSM is currently in debug mode: "
# Monitor will check if debug is running.
if [ " $( pgrep -fc -u " ${ USER } " " ${ selfname } debug " ) " != "0" ] || [ " $( pgrep -fc -u " ${ USER } " " ${ selfname } d " ) " != "0" ] ; then
fn_print_info "Checking debug : LinuxGSM is currently in debug mode: "
fn_print_info_eol
fn_script_log_pass "Checking lockfile : LinuxGSM is currently in debug mode"
fn_script_log_pass "Checking debug : LinuxGSM is currently in debug mode"
core_exit.sh
fi
}
fn_monitor_check_install( ) {
# Monitor will check if update is running.
if [ " $( pgrep -fc " ${ selfname } install " ) " != "0" ] || [ " $( pgrep -fc " ${ selfname } i " ) " != "0" ] || [ " $( pgrep -fc " ${ selfname } auto-install " ) " != "0" ] || [ " $( pgrep -fc " ${ selfname } ai " ) " != "0" ] ; then
fn_print_dots "Checking for installer: "
fn_print_checking_eol
fn_script_log_info "Checking for installer: CHECKING"
fn_print_info "Checking for installer: LinuxGSM is currently installing: "
fn_monitor_check_backup( ) {
# Remove stale lockfile.
if [ -f " ${ lockdir } /backup.lock " ] ; then
if [ " $( find " ${ lockdir } /backup.lock " -mmin +60) " ] ; then
fn_print_warn "Checking backup: Removing stale lockfile: "
fn_print_warn_eol
fn_script_log_warn "Checking backup: Removing stale lockfile"
rm -f " ${ lockdir } /backup.lock "
fi
fi
# Monitor will check if backup is running.
if [ -f " ${ lockdir } /backup.lock " ] ; then
fn_print_info "Checking backup: LinuxGSM is currently running a backup: "
fn_print_info_eol
fn_script_log_pass "Checking for installer: LinuxGSM is currently installing"
fn_script_log_info "Checking backup: LinuxGSM is currently running a backup "
core_exit.sh
fi
}
# This includes all update related commands.
fn_monitor_check_update( ) {
# Specific check for docker. Will ignore the command watch -n 1800 ./csgoserver update
monitorps = 0
if [ " $( pgrep -fc " n* ${ selfname } update " ) " != "0" ] ; then
monitorps = " $(( monitorps - 1 )) "
fi
# Monitor will check if an update is running.
if [ " $( pgrep -fc " ${ selfname } update " ) " != "0" ] || [ " $( pgrep -fc " ${ selfname } u " ) " != "0" ] || [ " $( pgrep -fc " ${ selfname } validate " ) " != "0" ] || [ " $( pgrep -fc " ${ selfname } v " ) " != "0" ] ; then
monitorps = " $(( monitorps + 2 )) "
if [ " ${ monitorps } " != "0" ] ; then
fn_print_info_nl "Checking lockfile: LinuxGSM is currently updating: "
fn_print_info_eol
fn_script_log_pass "Checking lockfile: LinuxGSM is currently updating"
core_exit.sh
# Remove stale lockfile.
if [ -f " ${ lockdir } / ${ selfname } -update.lock " ] ; then
if [ " $( find " ${ lockdir } / ${ selfname } -update.lock " -mmin +15) " ] ; then
fn_print_warn "Checking update: Removing stale lockfile: "
fn_print_warn_eol
fn_script_log_warn "Checking update: Removing stale lockfile"
rm -f " ${ lockdir } / ${ selfname } -update.lock "
fi
fi
if [ -f " ${ lockdir } / ${ selfname } -update.lock " ] ; then
fn_print_info_nl "Checking update: LinuxGSM is currently updating: "
fn_print_info_eol
fn_script_log_pass "Checking update: LinuxGSM is currently updating"
core_exit.sh
fi
}
fn_monitor_check_update_source( ) {
if [ -f " ${ consolelogdir } / ${ selfname } -console.log " ] && [ " ${ engine } " = = "source" ] ; then
if grep -q "Your server needs to be restarted in order to receive the latest update." " ${ consolelogdir } / ${ selfname } -console.log " ; then
fn_print_dots "Checking update: "
fn_print_checking_eol
fn_script_log_info "Checking update: CHECKING"
fn_print_ok "Checking update: "
fn_print_ok_eol_nl
fn_script_log_pass " Checking update: Monitor is restarting ${ selfname } to apply update "
alert = "restart"
alert.sh
fn_script_log_info " Checking update: Monitor is restarting ${ selfname } to apply update "
command_restart.sh
core_exit.sh
fi
fi
}
fn_monitor_check_session( ) {
@ -147,12 +174,12 @@ fn_monitor_query() {
fn_print_querying_eol
fn_script_log_info " Querying port: ${ querymethod } : ${ queryip } : ${ queryport } : ${ queryattempt } : QUERYING "
# querydelay
if [ " $( head -n 1 " ${ lockdir } / ${ selfname } .lock " ) " -gt " $( date "+%s" -d " ${ querydelay } mins ago " ) " ] ; then
if [ " $( head -n 1 " ${ lockdir } / ${ selfname } -start .lock" ) " -gt " $( date "+%s" -d " ${ querydelay } mins ago " ) " ] ; then
fn_print_ok " Querying port: ${ querymethod } : ${ ip } : ${ queryport } : ${ totalseconds } / ${ queryattempt } : "
fn_print_delay_eol_nl
fn_script_log_info " Querying port: ${ querymethod } : ${ ip } : ${ queryport } : ${ queryattempt } : DELAY "
fn_script_log_info " Query bypassed: ${ gameservername } started less than ${ querydelay } minutes ago "
fn_script_log_info " Server started: $( date -d @$( head -n 1 " ${ lockdir } / ${ selfname } .lock " ) ) "
fn_script_log_info " Server started: $( date -d @$( head -n 1 " ${ lockdir } / ${ selfname } -start .lock" ) ) "
fn_script_log_info " Current time: $( date) "
monitorpass = 1
core_exit.sh
@ -271,8 +298,14 @@ core_logs.sh
info_game.sh
# query pre-checks
fn_monitor_check_update_source
fn_monitor_check_update
fn_monitor_check_backup
fn_monitor_check_debug
fn_monitor_check_lockfile
fn_monitor_check_session
# Monitor will not continue if session only check.
if [ " ${ querymode } " != "1" ] ; then
fn_monitor_check_queryport