这篇文章上次修改于 506 天前,可能其部分内容已经发生变化,如有疑问可询问作者。
$ cat toolbox.sh
#!/bin/sh

SCRIPT_DIR="$(cd "$(dirname "$0")"; pwd)"
DATA_FILE="${SCRIPT_DIR}/data"

# Default display of system summary information
echo "System Summary Information"
uname -a
echo

# 公共方法, 输出颜色文字
color_output() {
  local msg_type=$1
  local msg=$2
  case $msg_type in
    "info")
      echo -e "\e[32m$msg\e[0m"
      ;;
    "warning")
      echo -e "\e[33m$msg\e[0m"
      ;;
    "error")
      echo -e "\e[31m$msg\e[0m"
      ;;
    *)
      echo $msg
      ;;
  esac
}

# Provide different options for the user to choose different operations
i=1
declare -a LOG_ARRAY
while read line
do
        # echo "LINE:"$line
  # ss-ef|优钱SaaS-智能拓客|/data/saas/ss-ef/ss-ef.jar|/data/saas/ss-ef/logs/ss-ef.jar.log
  project_code=`echo $line|awk -F '|' '{print $1}'`
  project_name=`echo $line|awk -F '|' '{print $2}'`
  project_file=`echo $line|awk -F '|' '{print $3}'`
  grep_string=`echo $project_file | awk -F '/' '{print $NF}'`
  LOG_ARRAY[$i]=`echo $line|awk -F '|' '{print $4}'`

  # 判断文件是否存在
  if [ ! -f "$project_file" ]; then
     color_output error "Error: $project_file 文件不存在 "
  fi

  # echo $project_name $grep_string
  if ps aux | grep $grep_string | grep -v grep > /dev/null
  then
    _status=`color_output info running`
  else
    _status=`color_output error down`
  fi
  echo -e "`printf "|%2s | %-20s | %-30s | %-55s | %s |\n" $i $project_code $project_name $project_file $_status`"
  i=$(($i+1))
done < "${DATA_FILE}"


function show_log()
{
    # 檢查長度
    echo -e "\n\n"
    if [ "$1" -gt ${#LOG_ARRAY[*]} ]; then
      echo "无效输入"
      exit 1
    fi
    index=$1
    # echo $index "${LOG_ARRAY[$index]}"
    echo -e "${LOG_ARRAY[$index]} \n" && tail -f ${LOG_ARRAY[$index]}
}


# ------------------------------

echo

while true
do
    #read -p "请输入有效的输入: " choice
    read -p "输入对应选项,查看日志: [1-${#LOG_ARRAY[*]}]  " choice
    if [ -z "$choice" ] || [ "$choice" -gt ${#LOG_ARRAY[*]} ]
    then
        color_output warning "输入无效,请重新输入"
    else
        show_log $choice
    fi
done

#show_log $choice