start 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #!/bin/sh
  2. TT=
  3. ID=$1
  4. START_FILE=$1
  5. ECHO="echo -e"
  6. if [ "$(uname -s)" = "Darwin" ]; then
  7. ECHO=echo
  8. fi
  9. if [ "x$START_FILE" = "x" ]; then
  10. $ECHO "Usage: $0 <ID>"
  11. exit
  12. fi
  13. if [ ! -z $(which tt-beta 2>/dev/null) ]; then
  14. TT=tt-beta
  15. elif [ ! -z $(which tt++ 2>/dev/null) ]; then
  16. TT=tt++
  17. else
  18. $ECHO "\x1b[1;31m软件安装错误,没有找到可用的 tintin,请重新安装。\x1b[0m"
  19. exit
  20. fi
  21. if [ -f var/ids/$START_FILE ]; then
  22. START_FILE=var/ids/$START_FILE
  23. elif [ -f ids/$START_FILE ]; then
  24. START_FILE=ids/$START_FILE
  25. else
  26. $ECHO "\x1b[1;31m不存在启动配置文件 \x1b[1;33m$START_FILE\x1b[1;31m。\x1b[0m"
  27. exit
  28. fi
  29. $ECHO "\x1b[1;32m启动 tintin...\x1b[0m"
  30. $ECHO "\x1b[1;32m$TT $START_FILE\x1b[0m"
  31. mkdir -p tmux/$ID
  32. log() {
  33. MSG=$1
  34. TIME=$(date +'%Y-%m-%d %H:%M:%S')
  35. echo $TIME $START_FILE $MSG >> log/tintin.log
  36. }
  37. tintin() {
  38. log "TinTin++ 启动。"
  39. $TT -G -t GAME-$ID $START_FILE
  40. }
  41. tintin
  42. CODE=$?
  43. INTERVAL=1
  44. MAX_INTERVAL=1800
  45. while [ "$CODE" -ne "0" ]; do
  46. if [ "$INTERVAL" -gt "$MAX_INTERVAL" ]; then
  47. INTERVAL=$MAX_INTERVAL
  48. fi
  49. log "TinTin++ 非正常退出,exit code = $CODE,等待 $INTERVAL 秒后重新启动。"
  50. sleep $INTERVAL
  51. INTERVAL=$(expr $INTERVAL '*' 2)
  52. tintin
  53. CODE=$?
  54. done
  55. log "TinTin++ 正常退出,exit code = $CODE"