#!/bin/bash
if [[ $(whoami) != "root" ]]; then
  sudo echo
  sudo nohup bash $0 &
  sleep 1s
  sudo tail -f nohup.out
  exit 0
fi
SCRIPT_DIR=$(cd $(dirname $0); pwd)
LOG="/opt/systemk/mediaserver/var/log"
CRASH="/opt/systemk/mediaserver/var/crash"
CONF="/opt/systemk/mediaserver/etc/mediaserver.conf"
CRASHNUM="${HOME}/crashnum"

chk() {
  curnum=$(find "$CRASH" -type f | wc -l)
  
  if [[ $curnum -gt $prevnum ]]; then
    tar zcf "${SCRIPT_DIR}/getLog3_$(date +'%Y%m%d%H%M%S').tar.gz" \
            "$LOG" \
            "$CRASH" \
            $(find /opt/systemk/mediaserver/bin/ -type f -name "core*") \
            /var/log/syslog*
    # revert logLevel
    rm -f "${CONF}" "${CRASHNUM}"
    mv "${CONF}.bak" "${CONF}"
    systemctl restart systemk-mediaserver
    echo "クラッシュダンプの取得が完了しました。 このスクリプトを配置した共有フォルダを確認してください。"
    exit 0
  fi
}


if [[ $(grep -c logLevel "${CONF}") -eq 0 ]]; then
  find "$CRASH" -type f | wc -l >> "${CRASHNUM}"
  #cp -r "$LOG" "$LOG.bak"
  cp    "${CONF}" "${CONF}.bak"
  echo -e "logLevel=DEBUG2\nmaxLogFileSize=52428800" >> "${CONF}"
  systemctl restart systemk-mediaserver
fi


prevnum=$(cat "${CRASHNUM}")
echo "再度サーバークラッシュが発生するまで待機します。"
echo "ログ取得が完了すれば表示しますので、1日1回程度を目安にこの画面を確認してください。"
echo

while true
do
  sleep 60s
  chk
done
