linux - Displayining multiple bash output horizontally -


i have 4 important services running on machine want see them time. have simple bash script running bash profile.

echo proc="nginx mysql php-fpm pptpd" p in $proc   ps cax | grep $p > /dev/null    if [ $? -eq 0 ];   echo -e "\e[92m$p running\e[0m"   else     echo -e "\e[101m$p not running \e[0m"   fi  done echo 

the out put of script is:

nginx running mysql running php-fpm running pptpd running 

how can make this?

nginx running - mysql running - php-fpm running - pptpd running 

build status lines first array, , print array:

status=() p in $proc   if ps cax | grep -q $p;     status+=( " \e[92m$p running\e[0m " )   else     status+=( " \e[101m$p not running \e[0m " )   fi done (ifs=-; echo -e "${status[*]}") 

${status[*]} expands every element in array joined first character of ifs, set - earlier. note used subshell (ifs=-; echo ...), changing ifs doesn't affect rest of script.

other notes:

ps cax | grep $p > /dev/null if [ $? -eq 0 ]; 

can combined to:

if ps cax | grep -q $p; 

which more concise , readable. consider using pgrep instead.


Comments