shell脚本摘要

时间:2023-03-09 09:50:49
shell脚本摘要
  1. 开启监听端口的程序时,查看是否开启成功(该例子监听8983端口)

    #动态显示[|][/][-][\]
    function spinner() {
    local pid=$1
    local delay=0.5
    local spinstr='|/-\'
    while [ "$(ps aux | awk '{print $2}' | grep -w $pid)" ]; do
    local temp=${spinstr#?} #'\#'从字符串开头删除匹配subString,#?删除第一个字符
    printf " [%c] " "$spinstr"
    local spinstr=$temp${spinstr%"$temp"} #拼出一个新的字符串:删除第一个字符,把该字符加到被删字符串的后面。%:从结尾删除匹配到的字符串
    sleep $delay
    printf "\b\b\b\b\b\b" # \b退格键,删除显示的字符
    done
    printf " \b\b\b\b"
    } if hash lsof 2>/dev/null ; then # hash 查看系统中是否有该命令
    echo -n "Waiting up to 30 seconds to see Solr running on port $SOLR_PORT"
    # Launch in a subshell to show the spinner
    (loops=0
    while true
    do
    running=`lsof -PniTCP:8983 -sTCP:LISTEN`
    # 循环6次,每次sleep5秒,执行6次lsof
    if [ -z "$running" ]; then
    if [ $loops -lt 6 ]; then
    sleep 5
    loops=$[$loops+1]
    else
    echo -e "Still not seeing Solr listening on $SOLR_PORT after 30 seconds!"
    tail -30 "$SOLR_LOGS_DIR/solr.log"
    exit # subshell!
    fi
    else
    SOLR_PID=`ps auxww | grep start\.jar | grep -w 8983 | grep -v grep | awk '{print $2}' | sort -r`
    echo -e "\nStarted Solr server on port $8983 (pid=$SOLR_PID). Happy searching!\n"
    exit # subshell!
    fi
    done) &
    spinner $! # $!可以返回岛控制台
    else
    echo -e "NOTE: Please install lsof as this script needs it to determine if Solr is listening on port $SOLR_PORT."
    sleep 10
    SOLR_PID=`ps auxww | grep start\.jar | grep -w 8983 | grep -v grep | awk '{print $2}' | sort -r`
    echo -e "\nStarted Solr server on port $SOLR_PORT (pid=$SOLR_PID). Happy searching!\n"
    return;
    fi