shell脚本摘要
-
开启监听端口的程序时,查看是否开启成功(该例子监听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