g_fun.sh (2029B)
1 #!/bin/sh 2 3 norm=$(printf '\033[0m') 4 bold=$(printf '\033[1m') 5 faint=$(printf '\033[2m') 6 black=$(printf '\033[30m') 7 green=$(printf '\033[32m') 8 gray=$(printf '\033[37m') 9 bgred=$(printf '\033[41m') 10 lred=$(printf '\033[91m') 11 yellow=$(printf '\033[93m') 12 lblue=$(printf '\033[94m') 13 white=$(printf '\033[97m') 14 bgyellow=$(printf '\033[103m') 15 bgwhite=$(printf '\033[107m') 16 17 LOGFILE=/tmp/boot.log 18 G_LOGFILE=/dev/null 19 20 create_logfile() 21 { 22 G_LOGFILE=${LOGFILE} 23 export G_LOGFILE 24 :>${G_LOGFILE} 25 } 26 27 msg() 28 { 29 local fmt icon icon_plain kind log newline tstamp 30 31 icon= 32 icon_plain= 33 kind=$1 34 shift 35 fmt=$1 36 shift 37 tstamp=$(date +%T) 38 39 log=1 40 newline=1 41 case ${kind} in 42 err) icon_plain="=E=" 43 icon="${bold}${white}${bgred}${icon_plain}";; 44 info) icon_plain="=I=" 45 icon="${green}${icon_plain}";; 46 servnl) icon_plain="=S=" 47 icon="${green}${icon_plain}" 48 newline=1;; 49 serv) icon_plain="=S=" 50 icon="${green}${icon_plain}" 51 newline=0;; 52 query) icon_plain="=Q=" 53 icon="${bold}${yellow}${icon_plain}" 54 log=0 55 newline=0;; 56 warn) icon_plain="=W=" 57 icon="${bgyellow}${bold}${black}${icon_plain}";; 58 *) ;; 59 esac 60 printf "%s %s " "${icon}" ${tstamp} 61 if [ -n "${G_LOGFILE}" ]; then 62 printf "%s %s " "${icon_plain}" ${tstamp} >>${G_LOGFILE} 63 fi 64 printf "${fmt}${norm}" "$@" 65 if [ ${newline} -eq 1 ]; then 66 echo 67 else 68 printf ' ' 69 fi 70 if [ ${log} -eq 1 ] && [ -n "${G_LOGFILE}" ]; then 71 printf "$(echo "${fmt}" | \ 72 sed 's/'$(printf '\033')'\[[0-9]\+m//g')\n" \ 73 "$@" >>${G_LOGFILE} 74 fi 75 } 76 77 parents() 78 { 79 pid=$1 80 if [ -z "$pid" ]; then 81 pid=$$ 82 fi 83 84 ppid=$(ps -ef | awk '{if ($2=='$pid') print $3}') 85 echo $ppid 86 if [ $ppid -gt 1 ]; then 87 parents $ppid 88 fi 89 } 90 91 intmux() 92 { 93 local intmux=0 94 for pid in $(parents); do 95 line=$(ps -ef | awk '{if ($2=='$pid') print $0}') 96 case "$line" in 97 *intmux*) ;; 98 *tmux*) intmux=1;; 99 *) ;; 100 esac 101 done 102 if [ "${intmux}" -eq 1 ]; then 103 return 0 104 else 105 return 1 106 fi 107 }