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