<рдкрд┐рдЫрд▓рд╛ | рд╡рд┐рд╖рдп-рд╕реВрдЪреА | рдЕрдЧрд▓рд╛>
рдбреА.2. /lib/lsb/init-functionsтАМ
# / рдмрд┐рди / рд╢
############################################# #####################
#
# рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ /lib/lsb/init-funtions
#
# рд╡рд┐рд╡рд░рдг: рд░рди рд▓реЗрд╡рд▓ рдХрдВрдЯреНрд░реЛрд▓ рдлрд╝рдВрдХреНрд╢рдВрд╕
#
# / рдмрд┐рди / рд╢
############################################# #####################
#
# рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ /lib/lsb/init-funtions
#
# рд╡рд┐рд╡рд░рдг: рд░рди рд▓реЗрд╡рд▓ рдХрдВрдЯреНрд░реЛрд▓ рдлрд╝рдВрдХреНрд╢рдВрд╕
#
#рд▓реЗрдЦрдХ
#
# рдЕрджреНрдпрддрди
#
# рд╕рдВрд╕реНрдХрд░рдг
#
# рдиреЛрдЯ
#
#
#
#
#рд▓реЗрдЦрдХ
#
# рдЕрджреНрдпрддрди
#
# рд╕рдВрд╕реНрдХрд░рдг
#
# рдиреЛрдЯ
#
#
#
#
############################################# #####################
## рдкрд░реНрдпрд╛рд╡рд░рдг рд╡реНрдпрд╡рд╕реНрдерд╛
# рдкрд░реНрдпрд╛рд╡рд░рдг рдЙрдорд╛рд╕реНрдХ 022 рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рд╕реЗрдЯрдЕрдк рдХрд░реЗрдВ
рдирд┐рд░реНрдпрд╛рдд рдкрде = "/bin:/usr/bin:/sbin:/usr/sbin"
## рд░рдВрдЧ рдЖрджреЗрд╢ рд╕реЗрдЯ рдХрд░реЗрдВ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрдХреЛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
# рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдХреГрдкрдпрд╛ `рдореИрди рдХрдВрд╕реЛрд▓_рдХреЛрдбреНрд╕' рд╕реЗ рдкрд░рд╛рдорд░реНрд╢ рд▓реЗрдВ
# "рдИрд╕реАрдПрдордП-48 рд╕реЗрдЯ рдЧреНрд░рд╛рдлрд╝рд┐рдХреНрд╕ рд░реЗрдВрдбрд┐рд╢рди" рдЕрдиреБрднрд╛рдЧ рдХреЗ рдЕрдВрддрд░реНрдЧрдд
#
# рдЪреЗрддрд╛рд╡рдиреА: 8 рдмрд┐рдЯ рд╕реЗ 9 рдмрд┐рдЯ рдлрд╝реЙрдиреНрдЯ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ рд╕рдордп,
# рд▓рд┐рдирдХреНрд╕ рдХрдВрд╕реЛрд▓ рдмреЛрд▓реНрдб (1;) рдХреЛ рджреЛрдмрд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдЧрд╛
############################################# #####################
## рдкрд░реНрдпрд╛рд╡рд░рдг рд╡реНрдпрд╡рд╕реНрдерд╛
# рдкрд░реНрдпрд╛рд╡рд░рдг рдЙрдорд╛рд╕реНрдХ 022 рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рд╕реЗрдЯрдЕрдк рдХрд░реЗрдВ
рдирд┐рд░реНрдпрд╛рдд рдкрде = "/bin:/usr/bin:/sbin:/usr/sbin"
## рд░рдВрдЧ рдЖрджреЗрд╢ рд╕реЗрдЯ рдХрд░реЗрдВ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрдХреЛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
# рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдХреГрдкрдпрд╛ `рдореИрди рдХрдВрд╕реЛрд▓_рдХреЛрдбреНрд╕' рд╕реЗ рдкрд░рд╛рдорд░реНрд╢ рд▓реЗрдВ
# "рдИрд╕реАрдПрдордП-48 рд╕реЗрдЯ рдЧреНрд░рд╛рдлрд╝рд┐рдХреНрд╕ рд░реЗрдВрдбрд┐рд╢рди" рдЕрдиреБрднрд╛рдЧ рдХреЗ рдЕрдВрддрд░реНрдЧрдд
#
# рдЪреЗрддрд╛рд╡рдиреА: 8 рдмрд┐рдЯ рд╕реЗ 9 рдмрд┐рдЯ рдлрд╝реЙрдиреНрдЯ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ рд╕рдордп,
# рд▓рд┐рдирдХреНрд╕ рдХрдВрд╕реЛрд▓ рдмреЛрд▓реНрдб (1;) рдХреЛ рджреЛрдмрд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдЧрд╛
# 256 рдмрд┐рдЯ рдлрд╝реЙрдиреНрдЯ рдХреЗ рд╢реАрд░реНрд╖ 9 рдЧреНрд▓рд┐рдлрд╝ред рдпреЗ рдХрд░рддрд╛ рд╣реИ
# рдлрд╝реНрд░реЗрдордмрдлрд╝рд░ рдХрдВрд╕реЛрд▓ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛
рд╕рд╛рдорд╛рдиреНрдп='\\033[0;39m' # рдорд╛рдирдХ рдХрдВрд╕реЛрд▓ рдЧреНрд░реЗ SUCCESS='\\033[1;32m' # рд╕рдлрд▓рддрд╛ рд╣рд░реА рд╣реИ рдЪреЗрддрд╛рд╡рдиреА='\\033[1;33m' # рдЪреЗрддрд╛рд╡рдирд┐рдпрд╛рдВ рдкреАрд▓реА рд╣реИрдВ рд╡рд┐рдлрд▓рддрд╛='\\ 033[1;31m" # рд╡рд┐рдлрд▓рддрд╛рдПрдВ рд▓рд╛рд▓ рд╣реИрдВ INFO='\\033[1;36m'' # рд╕реВрдЪрдирд╛ рд╣рд▓реНрдХреА рд╕рд┐рдпрд╛рди рд╣реИ BRACKET='\\033[1;34m" # рдмреНрд░реИрдХреЗрдЯ рдиреАрд▓реЗ рд╣реИрдВ
# рд░рдВрдЧреАрди рдЙрдкрд╕рд░реНрдЧ BMPREFIX='' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
SUCCESS_PREFIX='${SUCCESS} * ${NORMAL} 'FAILURE_PREFIX='${FAILURE}*****${NORMAL} 'рдЪреЗрддрд╛рд╡рдиреА_PREFIX='${рдЪреЗрддрд╛рд╡рдиреА} *** ${рд╕рд╛рдорд╛рдиреНрдп} ' SKIP_PREFIX='${ рдЬрд╛рдирдХрд╛рд░реА} рдПрд╕ ${рд╕рд╛рдорд╛рдиреНрдп}"
SUCCESS_SUFFIX='${BRACKET}[${SUCCESS} рдареАрдХ рд╣реИ ${BRACKET}]${NORMAL}' FAILURE_SUFFIX='${BRACKET}[${FAILURE} рд╡рд┐рдлрд▓ ${BRACKET}]${NORMAL}' WARNING_SUFFIX='$ {рдмреНрд░реИрдХреЗрдЯ}[${рдЪреЗрддрд╛рд╡рдиреА} рдЪреЗрддрд╛рд╡рдиреА ${рдмреНрд░реИрдХреЗрдЯ}]${рд╕рд╛рдорд╛рдиреНрдп}" SKIP_SUFFIX='${рдмреНрд░реИрдХреЗрдЯ}[${рдЬрд╛рдирдХрд╛рд░реА} рдЫреЛрдбрд╝реЗрдВ ${рдмреНрд░реИрдХреЗрдЯ}]${рд╕рд╛рдорд╛рдиреНрдп}'
рдмреВрдЯрд▓реЙрдЧ=/рд░рди/рдмреВрдЯрд▓реЙрдЧ KILLDELAY=3 SCRIPT_STAT='0'
# рдХреЛрдИ рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╕реЗрдЯ рдХрд░реЗрдВ рдЬреИрд╕реЗ рд╣реЗрдбрд▓реЗрд╕ [ -r /etc/sysconfig/rc.site ] && ред /etc/sysconfig/rc.site
## рд╕реНрдХреНрд░реАрди рдЖрдпрд╛рдо
# рд╡рд░реНрддрдорд╛рди рд╕реНрдХреНрд░реАрди рдЖрдХрд╛рд░ рдвреВрдВрдвреЗрдВ рдпрджрд┐ [ -z "${COLUMNS}" ]; рддрдм
COLUMNS=$(sty size) COLUMNS=${COLUMNS##* }
fi
# рджреВрд░рд╕реНрде рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЬреИрд╕реЗ рдХрд┐ рд╕реАрд░рд┐рдпрд▓ рдкреЛрд░реНрдЯ, рдпрджрд┐ [ "${COLUMNS}" = "0" ]; рддреЛ stty рдЖрдХрд╛рд░ 0 рд▓реМрдЯрд╛рддрд╛ рд╣реИ; рддрдм
рдХреЙрд▓рдо=80
fi
## рдкрд░рд┐рдгрд╛рдо рд╕рдВрджреЗрд╢реЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдорд╛рдк COL=$((${COLUMNS} - 8))
WCOL=$((${COL} - 2))
## рдХрд░реНрд╕рд░ рд╕реНрдерд┐рддрд┐ рдХрдорд╛рдВрдб рд╕реЗрдЯ рдХрд░реЗрдВ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ echo SET_COL='\\033[${COL}G' # рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ $COL char SET_WCOL='\\033[${WCOL}G' # рдкрд░ $WCOL char CURS_UP= рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред "\\033[1A\\033[0G" # рдПрдХ рдкрдВрдХреНрддрд┐ рдКрдкрд░, 0рд╡реЗрдВ рдЪрд╛рд░ рдкрд░ CURS_ZERO='\\033[0G'
############################################ ##########################
# рд╕реНрдЯрд╛рд░реНрдЯ_рдбреЗрдорди() #
# рдЙрдкрдпреЛрдЧ: рд╕реНрдЯрд╛рд░реНрдЯ_рдбреЗрдорди [-рдПрдл] [-рдПрди рдирд╛рдЗрд╕рд▓реЗрд╡рд▓] [-рдкреА рдкрд┐рдбрдлрд╛рдЗрд▓] рдкрд╛рдердирд╛рдо [рдЖрд░реНрдЧреНрд╕...] #
# #
# рдЙрджреНрджреЗрд╢реНрдп: рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдбреЗрдореЙрди рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓рд╛рддрд╛ рд╣реИ #
# #
# рдЗрдирдкреБрдЯ: -f: (рдлреЛрд░реНрд╕) рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдЪрд▓рд╛рдПрдВ, рднрд▓реЗ рд╣реА рд╡рд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЪрд▓ рд░рд╣рд╛ рд╣реЛред #
# -рдПрди рдЕрдЪреНрдЫрд╛ рд╕реНрддрд░: рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕реНрддрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред рджреЗрдЦреЗрдВ 'рдЖрджрдореА рдЕрдЪреНрдЫрд╛ рд╣реИ(1)'. #
# -p pidfile: рдкреАрдЖрдИрдбреА тАЛтАЛрдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред #
# рдкрдердирд╛рдо: рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдкреВрд░рд╛ рдкрде #
# рддрд░реНрдХ: рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рддрд░реНрдХ рджрд┐рдП рдЧрдП (рдкрдердирд╛рдо) #
# #
# рд╡рд╛рдкрд╕реА рдорд╛рди (рдЬреИрд╕рд╛ рдХрд┐ рдПрд▓рдПрд╕рдмреА рдирд┐рдХрд╛рд╕ рдХреЛрдб рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ): #
# 0 - рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЪрд▓ рд░рд╣рд╛ рд╣реИ рдпрд╛ рд╕реЗрд╡рд╛ рдареАрдХ рд╣реИ #
# 1 - рд╕рд╛рдорд╛рдиреНрдп рдпрд╛ рдЕрдирд┐рд░реНрджрд┐рд╖реНрдЯ рддреНрд░реБрдЯрд┐ #
#2 - рдЕрдорд╛рдиреНрдп рдпрд╛ рдЕрддреНрдпрдзрд┐рдХ рддрд░реНрдХ #
#5 - рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рд╣реИ #
############################################ ##########################
рдкреНрд░рд╛рд░рдВрдн_рдбреЗрдорди()
{
рд╕реНрдерд╛рдиреАрдп рдмрд▓ = "" рд╕реНрдерд╛рдиреАрдп рдЕрдЪреНрдЫрд╛ = "0" рд╕реНрдерд╛рдиреАрдп рдкрд┐рдбрдлрд╝рд╛рдЗрд▓ = "" рд╕реНрдерд╛рдиреАрдп рдкрд┐рдбрд▓рд┐рд╕реНрдЯ = "" рд╕реНрдерд╛рдиреАрдп рд░реЗрдЯрд╡рд▓ = ""
# рд╕рддреНрдп рд░рд╣рддреЗ рд╣реБрдП рддрд░реНрдХреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░реЗрдВ
do
рдХреЗрд╕ "${1}" рдореЗрдВ
-рдПрдл)
рдмрд▓='1' рд╢рд┐рдлреНрдЯ 1
;;
-рдПрди)
рдЕрдЪреНрдЫрд╛='${2}' рд╢рд┐рдлреНрдЯ 2
;;
-рдкреА)
pidfile='${2}' рд╢рд┐рдлреНрдЯ 2
;;
-*)
рд╡рд╛рдкрд╕реА 2
;;
рдХрд┐рдпрд╛
*)
esac
рдкреНрд░реЛрдЧреНрд░рд╛рдо='${1}' рдмреНрд░реЗрдХ
;;
# рд╡реИрдз рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ
рдЕрдЧрд░ [ ! -рдИ "${рдкреНрд░реЛрдЧреНрд░рд╛рдо}" ]; рдлрд┐рд░ 5 рд▓реМрдЯреЗрдВ; рдлрд╛рдИ
# рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛
рдпрджрд┐ [ -z "${рдмрд▓}" ]; рддрдм
рдпрджрд┐ [ -z "${pidfile}" ]; рддрдм
# рдбрд┐рд╕реНрдХрд╡рд░реА pidlist=`pidofproc "${1}"` retval='${?}' рджреНрд╡рд╛рд░рд╛ рдкреАрдЖрдИрдбреА тАЛтАЛрдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВ
рдЕрдиреНрдп
# рдкреАрдЖрдИрдбреА тАЛтАЛрдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдкреАрдЖрдИрдбреА тАЛтАЛрд╢рд╛рдорд┐рд▓ рд╣реИрдВ
# рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдПрд▓рдПрд╕рдмреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдкрде pidofproc рдХреЛ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП,
# рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдпрд╛ рдорд╛рдирдХ рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред pidlist=`pidofproc -p "${pidfile}" "${1}"`
рд░реЗрдЯрд╡рд▓='${?}'
fi
# рдХреЗрд╡рд▓ рдПрдХ рдорд╛рди рд▓реМрдЯрд╛рдПрдВ
# рдпрд╣ init рд╕реНрдХреНрд░рд┐рдкреНрдЯ (рдпрд╛ рд╡рд┐рддрд░рдг рдХреЗ рдХрд╛рд░реНрдпреЛрдВ) рдХреА рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░реА рд╣реИ
# рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд▓реЙрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП! рдХреЗрд╕ "${retval}" рдореЗрдВ
0)
# рдкреНрд░реЛрдЧреНрд░рд╛рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рдпрд╣ рдПрдХ рд╣реИ
#рд╕рдлрд▓ рд╢реБрд░реБрдЖрдд. рд╡рд╛рдкрд╕реА 0
;;
1)
# рдкреНрд░реЛрдЧреНрд░рд╛рдо рдирд╣реАрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдЕрдорд╛рдиреНрдп рдкреАрдЖрдИрдбреА тАЛтАЛрдлрд╝рд╛рдЗрд▓ рдореМрдЬреВрдж рд╣реИ
# pid рдлрд╝рд╛рдЗрд▓ рд╣рдЯрд╛рдПрдБ рдФрд░ rm -f "${pidfile}" рдЬрд╛рд░реА рд░рдЦреЗрдВ
;;
3)
# рдкреНрд░реЛрдЧреНрд░рд╛рдо рдирд╣реАрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ рдФрд░ рдХреЛрдИ рдкрд┐рдбрдлрд╝рд╛рдЗрд▓ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ
# рдпрд╣рд╛рдВ рдХреБрдЫ рди рдХрд░реЗрдВ, рд╕реНрдЯрд╛рд░реНрдЯ_рдбреЗрдорди рдХреЛ рдЬрд╛рд░реА рд░рд╣рдиреЗ рджреЗрдВред
;;
*)
esac
fi
# рд╕реНрдерд┐рддрд┐ рдорд╛рдиреЛрдВ рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдП рдЧрдП рдЕрдиреНрдп рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдирд╣реАрдВ рдХреА рдЬрд╛рдПрдЧреА
# рдФрд░ рдПрдХ рдЕрдирд┐рд░реНрджрд┐рд╖реНрдЯ рддреНрд░реБрдЯрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реМрдЯрд╛ред рд╡рд╛рдкрд╕реА 1
;;
#рд╢реБрд░реБрдЖрдд рдХрд░реЛ!
рдЕрдЪреНрдЫрд╛ -n "${рдЕрдЪреНрдЫрд╛}" "${@}"
}
############################################ ##########################
# рдХрд┐рд▓рдкреНрд░реЛрдХ() #
# рдЙрдкрдпреЛрдЧ: рдХрд┐рд▓рдкреНрд░реЛрдХ [-рдкреА рдкрд┐рдбрдлрд╛рдЗрд▓] рдкрдердирд╛рдо [рд╕рд┐рдЧреНрдирд▓] #
# #
# рдЙрджреНрджреЗрд╢реНрдп: рдЪрд▓ рд░рд╣реА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рдг рд╕рдВрдХреЗрдд рднреЗрдЬрдирд╛ #
# #
# рдЗрдирдкреБрдЯ: -p pidfile, рдирд┐рд░реНрджрд┐рд╖реНрдЯ pidfile рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ #
# рдкрдердирд╛рдо, рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдкрдердирд╛рдо #
# рд╕рд┐рдЧреНрдирд▓, рдЗрд╕ рд╕рд┐рдЧреНрдирд▓ рдХреЛ рдкрдердирд╛рдо рдкрд░ рднреЗрдЬреЗрдВ #
# #
# рд╡рд╛рдкрд╕реА рдорд╛рди (рдЬреИрд╕рд╛ рдХрд┐ рдПрд▓рдПрд╕рдмреА рдирд┐рдХрд╛рд╕ рдХреЛрдб рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ): #
# 0 - рдкреНрд░реЛрдЧреНрд░рд╛рдо (рдкрдердирд╛рдо) рдмрдВрдж рд╣реЛ рдЧрдпрд╛ рд╣реИ/рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрдВрдж рд╣реИ рдпрд╛ #
# | рд░рдирд┐рдВрдЧ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рднреЗрдЬ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ | рд╕рдВрдХреЗрдд рдФрд░ | рд░реЛрдХ | # | |
# | рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ | # | |||
# | 1 | - рд╕рд╛рдорд╛рдиреНрдп рдпрд╛ рдЕрдирд┐рд░реНрджрд┐рд╖реНрдЯ рддреНрд░реБрдЯрд┐ | # | ||
# | 2 | - рдЕрдорд╛рдиреНрдп рдпрд╛ рдЕрддреНрдпрдзрд┐рдХ рддрд░реНрдХ | # | ||
# | 5 | - рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рд╣реИ | # | ||
# | 7 | - рдкреНрд░реЛрдЧреНрд░рд╛рдо рдирд╣реАрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ рдФрд░ рдПрдХ рд╕рд┐рдЧреНрдирд▓ рдерд╛ | рдЖрдкреВрд░реНрддрд┐ | # |
############################################ ##########################
рдХрд┐рд▓рдкреНрд░реЛрдХ()
{
рд╕реНрдерд╛рдиреАрдп рдкрд┐рдбрдлрд╝рд╛рдЗрд▓ рд╕реНрдерд╛рдиреАрдп рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕реНрдерд╛рдиреАрдп рдЙрдкрд╕рд░реНрдЧ рд╕реНрдерд╛рдиреАрдп рдкреНрд░реЛрдЧреНрдиреЗрдо
рд╕реНрдерд╛рдиреАрдп рд╕рд┐рдЧреНрдирд▓='-TERM' рд╕реНрдерд╛рдиреАрдп рдлрд╝реЙрд▓рдмреИрдХ='-KILL' рд╕реНрдерд╛рдиреАрдп nosig
рд╕реНрдерд╛рдиреАрдп рдкрд┐рдбрд▓рд┐рд╕реНрдЯ рд╕реНрдерд╛рдиреАрдп рд░реЗрдЯрд╡рд▓ рд╕реНрдерд╛рдиреАрдп рдкрд┐рдб
рд╕реНрдерд╛рдиреАрдп рд╡рд┐рд▓рдВрдм='30' рд╕реНрдерд╛рдиреАрдп рдкрд┐рдбрдбреЗрдб рд╕реНрдерд╛рдиреАрдп рд╕рдордп
# рд╕рддреНрдп рд░рд╣рддреЗ рд╣реБрдП рддрд░реНрдХреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░реЗрдВ; рдХрд░рдирд╛
рдХреЗрд╕ "${1}" рдореЗрдВ
-рдкреА)
pidfile='${2}' рд╢рд┐рдлреНрдЯ 2
;;
*)
рдкреНрд░реЛрдЧреНрд░рд╛рдо='${1}'
рдпрджрд┐ [-n "${2}" ]; рдлрд┐рд░ рд╕рд┐рдЧреНрдирд▓ = "$ {2}" рдлрд╝реЙрд▓рдмреИрдХ = ""
рдЕрдиреНрдп
рдиреЛрд╕рд┐рдЧ=1
fi
# рдЕрддрд┐рд░рд┐рдХреНрдд рддрд░реНрдХреЛрдВ рдкрд░ рддреНрд░реБрдЯрд┐ рдпрджрд┐ [ -n "${3}" ]; рддрдм
рд╡рд╛рдкрд╕реА 2
рдЕрдиреНрдп
рддреЛрдбрд╝рдирд╛
рдХрд┐рдпрд╛
fi
;;
esac
# рд╡реИрдз рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ
рдЕрдЧрд░ [ ! -рдИ "${рдкреНрд░реЛрдЧреНрд░рд╛рдо}" ]; рдлрд┐рд░ 5 рд▓реМрдЯреЗрдВ; рдлрд╛рдИ
# рд╡реИрдз рд╕рд┐рдЧреНрдирд▓ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ check_signal "${signal}"
рдпрджрд┐ [ "${?}" -ne "0" ]; рдлрд┐рд░ рд╡рд╛рдкрд╕реА 2; рдлрд╛рдИ
# рдкрд┐рдбреНрд╕ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
рдпрджрд┐ [ -z "${pidfile}" ]; рддрдм
# рдбрд┐рд╕реНрдХрд╡рд░реА рджреНрд╡рд╛рд░рд╛ рдкрд┐рдб рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВ pidlist=`pidofproc "${1}"` retval='${?}'
рдЕрдиреНрдп
# рдкреАрдЖрдИрдбреА тАЛтАЛрдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдкреАрдЖрдИрдбреА тАЛтАЛрд╢рд╛рдорд┐рд▓ рд╣реИрдВ
# рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдПрд▓рдПрд╕рдмреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдкрде pidofproc рдХреЛ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП,
# рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдпрд╛ рдорд╛рдирдХ рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред pidlist=`pidofproc -p "${pidfile}" "${1}"`
рд░реЗрдЯрд╡рд▓='${?}'
fi
# рдХреЗрд╡рд▓ рдПрдХ рдорд╛рди рд▓реМрдЯрд╛рдПрдВ
# рдпрд╣ init рд╕реНрдХреНрд░рд┐рдкреНрдЯ (рдпрд╛ рд╡рд┐рддрд░рдг рдХреЗ рдХрд╛рд░реНрдпреЛрдВ) рдХреА рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░реА рд╣реИ
# рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд▓реЙрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП! рдХреЗрд╕ "${retval}" рдореЗрдВ
0)
# рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЪрд▓ рд░рд╣рд╛ рд╣реИ
# рдпрд╣рд╛рдВ рдХреБрдЫ рди рдХрд░реЗрдВ, рдХрд┐рд▓рдкреНрд░реЛрдХ рдХреЛ рдЬрд╛рд░реА рд░рд╣рдиреЗ рджреЗрдВред
;;
1)
# рдкреНрд░реЛрдЧреНрд░рд╛рдо рдирд╣реАрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдЕрдорд╛рдиреНрдп рдкреАрдЖрдИрдбреА тАЛтАЛрдлрд╝рд╛рдЗрд▓ рдореМрдЬреВрдж рд╣реИ
# рдкреАрдЖрдИрдбреА тАЛтАЛрдлрд╝рд╛рдЗрд▓ рд╣рдЯрд╛рдПрдБ. рдЖрд░рдПрдо -рдПрдл "${рдкрд┐рдбрдлрд╛рдЗрд▓}"
# рдпрд╣ рдХреЗрд╡рд▓ рддрднреА рд╕рдлрд▓рддрд╛ рд╣реИ рдЬрдм рдХреЛрдИ рд╕рд┐рдЧреНрдирд▓ рдкрд╛рд╕ рдирд╣реАрдВ рд╣реБрдЖ рд╣реЛред рдпрджрд┐ [ -n "${nosig}" ]; рддрдм
рд╡рд╛рдкрд╕реА 0
рдЕрдиреНрдп
рд╡рд╛рдкрд╕реА 7
fi
;;
3)
# рдкреНрд░реЛрдЧреНрд░рд╛рдо рдирд╣реАрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ рдФрд░ рдХреЛрдИ рдкрд┐рдбрдлрд╝рд╛рдЗрд▓ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ
# рдпрд╣ рдХреЗрд╡рд▓ рддрднреА рд╕рдлрд▓рддрд╛ рд╣реИ рдЬрдм рдХреЛрдИ рд╕рд┐рдЧреНрдирд▓ рдкрд╛рд╕ рдирд╣реАрдВ рд╣реБрдЖ рд╣реЛред рдпрджрд┐ [ -n "${nosig}" ]; рддрдм
рд╡рд╛рдкрд╕реА 0
рдЕрдиреНрдп
рд╡рд╛рдкрд╕реА 7
fi
;;
*)
esac
# рд╕реНрдерд┐рддрд┐ рдорд╛рдиреЛрдВ рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдП рдЧрдП рдЕрдиреНрдп рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдирд╣реАрдВ рдХреА рдЬрд╛рдПрдЧреА
# рдФрд░ рдПрдХ рдЕрдирд┐рд░реНрджрд┐рд╖реНрдЯ рддреНрд░реБрдЯрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реМрдЯрд╛ред рд╡рд╛рдкрд╕реА 1
;;
# рдирд┐рдХрд╛рд╕ рд╕рдВрдХреЗрддреЛрдВ рдФрд░ рдирд┐рдпрдВрддреНрд░рдг рд╕рдВрдХреЗрддреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХреНрд░рд┐рдпрд╛рдПрдВ рдХрд░реЗрдВ check_sig_type "${signal}"
рдпрджрд┐ [ "${?}" -eq "0" ]; рддрдм рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП # рд╕рд┐рдЧреНрдирд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
# рдЦрд╛рд▓реА рдкрд┐рдбрд▓рд┐рд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдЦрд╛рддрд╛ (рдкреАрдЖрдИрдбреА тАЛтАЛрдлрд╝рд╛рдЗрд▓ рдЕрднреА рднреА рдореМрдЬреВрдж рд╣реИ рдФрд░ рдирд╣реАрдВ
# рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдЧрдпрд╛)
рдпрджрд┐ [ "${рдкрд┐рдбрд▓рд┐рд╕реНрдЯ}" != "" ]; рддрдм
# ${рдкрд┐рдбрд▓рд┐рд╕реНрдЯ} рдореЗрдВ рдкрд┐рдб рдХреЗ рд▓рд┐рдП рдкрд┐рдбреНрд╕ рдХреА рд╕реВрдЪреА рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВ; рдХрд░рдирд╛
рдХрд┐рд▓ -0 "${pid}" 2> /dev/null рдЕрдЧрд░ [ "${?}" -ne "0" ]; рддрдм
# рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдИ рд╣реИ, рдЖрдЧреЗ рдЬрд╛рд░реА рд░рдЦреЗрдВ рдФрд░ рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╕рдм рдареАрдХ рд╣реИ рдЬрд╛рд░реА рд░рдЦреЗрдВ
рдЕрдиреНрдп
"${signal}" "${pid}" 2> /dev/null рдХреЛ рдорд╛рд░реЗрдВ
# "${pid}" рдХреЗ рд▓рд┐рдП ${delay}/10 рд╕реЗрдХрдВрдб рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ
# рдПрдХ рд╕реЗрдХрдВрдб рдХреЗ 10рд╡реЗрдВ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рд╕рдорд╛рдкреНрдд
рдЬрдмрдХрд┐ [ "${delay}" -ne "0" ]; рдХрд░рдирд╛
рдХрд┐рд▓ -0 "${pid}" 2> /dev/null || рдкрд┐рдбрдбреЗрдб = "1" рдпрджрд┐ [ "${рдкрд┐рдбрдбреЗрдб}" = "1" ]; рдлрд┐рд░ рддреЛрдбрд╝реЛ; рдлрд╛рдИ рд╕реНрд▓реАрдк 0.1
рджреЗрд░реА = "$(( ${рджреЗрд░реА} - 1 ))"
рдХрд┐рдпрд╛
# рдпрджрд┐ рдлрд╝реЙрд▓рдмреИрдХ рд╕реЗрдЯ рд╣реИ, рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЕрднреА рднреА рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рддреЛ
# рдлрд╝реЙрд▓рдмреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
рдпрджрд┐ [-n "${fallback}" -a "${piddead}" != "1" ]; рдлрд┐рд░ "${рдлрд╝реЙрд▓рдмреИрдХ}" "${pid}" 2> /dev/null рдХреЛ рдорд╛рд░реЗрдВ
рдиреАрдВрдж 1
# рдлрд┐рд░ рд╕реЗ рдЬрд╛рдВрдЪреЗрдВ, рдФрд░ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдВ рдпрджрд┐ рдЕрднреА рднреА рдХрд┐рд▓ -0 "${pid}" 2> /dev/null && return 1 рдЪрд▓ рд░рд╣рд╛ рд╣реИ
fi
fi
рдХрд┐рдпрд╛
fi
# рдкреБрд░рд╛рдиреА рдкреАрдЖрдИрдбреА тАЛтАЛрдлрд╛рдЗрд▓реЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╣рдЯрд╛ рджреЗрдВред рдпрджрд┐ [ -z "${pidfile}" ]; рддрдм
# $рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдмреЗрд╕рдиреЗрдо рдвреВрдВрдвреЗрдВ
рдЙрдкрд╕рд░реНрдЧ=`рдЧреВрдВрдЬ "${рдкреНрд░реЛрдЧреНрд░рд╛рдо}" | sed 's/[^/]*$//'` progname=`echo "${program}" | sed "s@${prefix}@@"`
рдпрджрд┐ [ -e "/var/run/${progname}.pid" ]; рддрдм
rm -f "/var/run/${progname}.pid" 2> /dev/null
fi
рдЕрдиреНрдп
рдпрджрд┐ [ -e "${pidfile}" ]; рдлрд┐рд░ rm -f "${pidfile}" 2> /dev/null; рдлрд╛рдИ
fi
# рдЙрди рд╕рдВрдХреЗрддреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдХрд┐рд╕реА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдмрд╕
# рдХрд┐рд▓ рдХреЛ рдЕрдкрдирд╛ рдХрд╛рдо рдХрд░рдиреЗ рджреЗрдВ, рдФрд░ рдореВрд▓реНрдп рдХреЗ рд▓рд┐рдП рдХрд┐рд▓ рдХреЗ рд░рд┐рдЯрд░реНрди рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░реЗрдВ
else# check_sig_type - ${pidlist} рдореЗрдВ pid рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рдЧреНрдирд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ; рдХрд░рдирд╛
"${signal}" "${pid}" рдХреЛ рдорд╛рд░ рдбрд╛рд▓реЛ
рдпрджрд┐ [ "${?}" -ne "0" ]; рдлрд┐рд░ рд╡рд╛рдкрд╕реА 1; рдлрд╛рдИ
рдХрд┐рдпрд╛
fi
}
############################################ ##########################
# pidofproc() #
# рдЙрдкрдпреЛрдЧ: pidofproc [-p pidfile] рдкрдердирд╛рдо #
# #
# рдЙрджреНрджреЗрд╢реНрдп: рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдбреЗрдореЙрди рдХреЗ рд▓рд┐рдП рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рдкрд┐рдб рд▓реМрдЯрд╛рддрд╛ рд╣реИ #
# #
# рдЗрдирдкреБрдЯ: -p pidfile, pidof рдХреЗ рдмрдЬрд╛рдп рдирд┐рд░реНрджрд┐рд╖реНрдЯ pidfile рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ #
# рдкрдердирд╛рдо, рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдкрде #
# #
# рд╡рд╛рдкрд╕реА рдорд╛рди (рдЬреИрд╕рд╛ рдХрд┐ рдПрд▓рдПрд╕рдмреА рд╕реНрдерд┐рддрд┐ рдХреЛрдб рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ): #
# 0 - рд╕рдлрд▓рддрд╛ (рд╕реНрдЯрдбрдЖрдЙрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреАрдЖрдИрдбреА) #
# 1 - рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЦрд╝рддреНрдо рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдкреАрдЖрдИрдбреА тАЛтАЛрдлрд╝рд╛рдЗрд▓ рдЕрднреА рднреА рдореМрдЬреВрдж рд╣реИ (рд╢реЗрд╖ рдкреАрдЖрдИрдбреА тАЛтАЛрдЖрдЙрдЯрдкреБрдЯ) #
#3 - рдкреНрд░реЛрдЧреНрд░рд╛рдо рдирд╣реАрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ (рдХреЛрдИ рдЖрдЙрдЯрдкреБрдЯ рдирд╣реАрдВ) #
############################################ ##########################
рдкрд┐рдбреЛрдлрд╝рдкреНрд░реЛрдХ()
{
рд╕реНрдерд╛рдиреАрдп рдкрд┐рдбрдлрд╝рд╛рдЗрд▓ рд╕реНрдерд╛рдиреАрдп рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕реНрдерд╛рдиреАрдп рдЙрдкрд╕рд░реНрдЧ рд╕реНрдерд╛рдиреАрдп рдкреНрд░реЛрдЧреНрдиреЗрдо рд╕реНрдерд╛рдиреАрдп рдкрд┐рдбрд▓рд┐рд╕реНрдЯ рд╕реНрдерд╛рдиреАрдп рдПрд▓рдкреАрдЖрдИрдбреА
рд╕реНрдерд╛рдиреАрдп рдирд┐рдХрд╛рд╕рд╕реНрдерд┐рддрд┐='0'
# рд╕рддреНрдп рд░рд╣рддреЗ рд╣реБрдП рддрд░реНрдХреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░реЗрдВ; рдХрд░рдирд╛
рдХреЗрд╕ "${1}" рдореЗрдВ
-рдкреА)
pidfile='${2}' рд╢рд┐рдлреНрдЯ 2
;;
*)
рдкреНрд░реЛрдЧреНрд░рд╛рдо='${1}'
рдпрджрд┐ [ -n "${2}" ]; рддрдм
# рдмрд╣реБрдд рдЬрд╝реНрдпрд╛рджрд╛ рдмрд╣рд╕
# рдЪреВрдБрдХрд┐ рдпрд╣ рд╕реНрдерд┐рддрд┐ рд╣реИ, рдЕрдЬреНрдЮрд╛рдд рд░рд┐рдЯрд░реНрди 4 рд▓реМрдЯрд╛рдПрдБ
рдЕрдиреНрдп
рддреЛрдбрд╝рдирд╛
рдХрд┐рдпрд╛
fi
;;
esac
# рдпрджрд┐ рдХреЛрдИ рдкреАрдЖрдИрдбреА тАЛтАЛрдлрд╝рд╛рдЗрд▓ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдФрд░ рдПрдХ рдвреВрдВрдвреЗрдВред рдпрджрд┐ [ -z "${pidfile}" ]; рддрдм
# рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдмреЗрд╕рдирд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
рдЙрдкрд╕рд░реНрдЧ=`рдЧреВрдВрдЬ "${рдкреНрд░реЛрдЧреНрд░рд╛рдо}" | sed 's/[^/]*$//'` рдпрджрд┐ [ -z "${prefix}" ]; рддрдм
progname='${program}' рдЕрдиреНрдпрдерд╛
progname=`echo "${рдкреНрд░реЛрдЧреНрд░рд╛рдо}" | sed "s@${prefix}@@"`
fi
# рдпрджрд┐ рдЙрд╕ рдирд╛рдо рд╕реЗ рдХреЛрдИ рдкреАрдЖрдИрдбреА тАЛтАЛрдлрд╝рд╛рдЗрд▓ рдореМрдЬреВрдж рд╣реИ, рддреЛ рдорд╛рди рд▓реЗрдВ рдХрд┐ рдпрд╣реА рд╡рд╣ рд╣реИред рдпрджрд┐ [ -e "/var/run/${progname}.pid" ]; рддрдм
pidfile='/var/run/${progname}.pid'
fi
fi
# рдпрджрд┐ рдХреЛрдИ рдкреАрдЖрдИрдбреА тАЛтАЛрдлрд╝рд╛рдЗрд▓ рд╕реЗрдЯ рд╣реИ рдФрд░ рдореМрдЬреВрдж рд╣реИ, рддреЛ рдЙрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдпрджрд┐ [ -n "${pidfile}" -a -e "${pidfile}" ]; рддрдм
# pidfile pidlist=`/bin/head -n1 "${pidfile}"` рдХреА рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
# 'head -n1' рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ 'sed 1q' рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
# рдХреНрдпрд╛ LFS рдХреЛ /bin/head рдХреЛ /usr/bin/head рдкрд░ рд▓реЗ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП
рдЕрдиреНрдп
#рдкрд┐рдбреЛрдл рдХрд╛ рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВ
pidlist=`pidof "${рдкреНрд░реЛрдЧреНрд░рд╛рдо}"`
fi
# рдкрддрд╛ рд▓рдЧрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рд╕рднреА рд╕реВрдЪреАрдмрджреНрдз рдкреАрдЖрдИрдбреА тАЛтАЛрдЪрд▓ рд░рд╣реЗ рд╣реИрдВред ${рдкрд┐рдбрд▓рд┐рд╕реНрдЯ} рдореЗрдВ рдкреАрдЖрдИрдбреА тАЛтАЛрдХреЗ рд▓рд┐рдП; рдХрд░рдирд╛
рдХрд┐рд▓ -0 ${pid} 2> /dev/null
рдпрджрд┐ ["${?}" -eq "0" ]; рдлрд┐рд░ рдПрд▓рдкреАрдЖрдИрдбреА тАЛтАЛ= "$ {рдПрд▓рдкреАрдЖрдИрдбреА} $ {рдкрд┐рдб} "
рдЕрдиреНрдп
рдирд┐рдХрд╛рд╕рд╕реНрдерд┐рддрд┐='1'
fi
рдХрд┐рдпрд╛
рдпрджрд┐ [-z "${lpids}" -a ! -f "${pidfile}" ]; рдлрд┐рд░ рд▓реМрдЯреЗрдВ 3
рдЕрдиреНрдп
рдкреНрд░рддрд┐рдзреНрд╡рдирд┐ "${lpids}"
рд╡рд╛рдкрд╕реА "${exitstatus}"
fi
}
############################################ ##########################
# рд╕реНрдЯреЗрдЯрд╕рдкреНрд░реЛрдХ() #
# рдЙрдкрдпреЛрдЧ: рд╕реНрдЯреЗрдЯрд╕рдкреНрд░реЛрдХ [-рдкреА рдкрд┐рдбрдлрд╛рдЗрд▓] рдкрдердирд╛рдо #
# #
# рдЙрджреНрджреЗрд╢реНрдп: рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдбреЗрдореЙрди рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕реНрдЯрдбрдЖрдЙрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИ #
# #
# рдЗрдирдкреБрдЯ: -p pidfile, pidof рдХреЗ рдмрдЬрд╛рдп рдирд┐рд░реНрджрд┐рд╖реНрдЯ pidfile рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ #
# рдкрдердирд╛рдо, рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдкрде #
# #
# рд╡рд╛рдкрд╕реА рдорд╛рди: #
# 0 - рд╕реНрдерд┐рддрд┐ рдореБрджреНрд░рд┐рдд #
# 1 - рдЗрдирдкреБрдЯ рддреНрд░реБрдЯрд┐. рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдореЙрди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред #
############################################ ##########################
рд╕реНрдЯреЗрдЯрд╕рдкреНрд░реЛрдХ()
{
рд╕реНрдерд╛рдиреАрдп рдкрд┐рдбрдлрд╝рд╛рдЗрд▓ рд╕реНрдерд╛рдиреАрдп рдкрд┐рдбрд▓рд┐рд╕реНрдЯ
рдпрджрд┐ [ "${#}" = "0" ]; рддрдм
рдЗрдХреЛ "рдЙрдкрдпреЛрдЧ: рд╕реНрдЯреЗрдЯрд╕рдкреНрд░реЛрдХ [-рдкреА рдкрд┐рдбрдлрд╝рд▓] {рдкреНрд░реЛрдЧреНрд░рд╛рдо}" рдирд┐рдХрд╛рд╕ 1
fi
# рд╕рддреНрдп рд░рд╣рддреЗ рд╣реБрдП рддрд░реНрдХреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░реЗрдВ; рдХрд░рдирд╛
рдХреЗрд╕ "${1}" рдореЗрдВ
-рдкреА)
pidfile='${2}' рд╢рд┐рдлреНрдЯ 2
;;
*)
рдпрджрд┐ [ -n "${2}" ]; рддрдм
рдкреНрд░рддрд┐рдзреНрд╡рдирд┐ "рдмрд╣реБрдд рдЕрдзрд┐рдХ рддрд░реНрдХ" рд╡рд╛рдкрд╕реА 1
рдЕрдиреНрдп
рддреЛрдбрд╝рдирд╛
рдХрд┐рдпрд╛
fi
;;
esac
рдпрджрд┐ [ -n "${pidfile}" ]; рдлрд┐рд░ pidlist=`pidofproc -p "${pidfile}" $@`
рдЕрдиреНрдп
рдкрд┐рдбрд▓рд┐рд╕реНрдЯ = `рдкрд┐рдбреЛрдлрдкреНрд░реЛрдХ $@`
fi
# рдЕрдиреБрдЧрд╛рдореА рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХреЛ рдЯреНрд░рд┐рдо рдХрд░реЗрдВ
pidlist=`echo "${pidlist}" | sed -r 's/ +$//'` рдЖрдзрд╛рд░='${1##*/}'
рдпрджрд┐ [ -n "${рдкрд┐рдбрд▓рд┐рд╕реНрдЯ}" ]; рддрдм
/bin/echo -e "${INFO}${base} рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдЪрд▓ рд░рд╣рд╛ рд╣реИ" \ "рдЖрдИрдбреА(s) ${pidlist}.${NORMAL}"
рдЕрдиреНрдп
рдпрджрд┐ [ -n "${base}" -a -e "/var/run/${base}.pid" ]; рддрдм
/bin/echo -e "${рдЪреЗрддрд╛рд╡рдиреА}${1} рдирд╣реАрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ рд▓реЗрдХрд┐рди" \ "/var/run/${base}.pid рдореМрдЬреВрдж рд╣реИред${NORMAL}"
рдЕрдиреНрдп
рдпрджрд┐ [ -n "${pidfile}" -a -e "${pidfile}" ]; рддрдм
/bin/echo -e "${рдЪреЗрддрд╛рд╡рдиреА}${1} рдирд╣реАрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ" \ "рд▓реЗрдХрд┐рди ${pidfile} рдореМрдЬреВрдж рд╣реИред${NORMAL}"
рдЕрдиреНрдп
/bin/echo -e "${INFO}${1} рдирд╣реАрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ.${NORMAL}"
fi
fi
fi
}
############################################ ##########################
# рдЯрд╛рдЗрдорд╕реНрдкреЗрдХ() #
# #
# рдЙрджреНрджреЗрд╢реНрдп: рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдХреЛ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдВрддрд░рд┐рдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдлрд╝рдВрдХреНрд╢рди #
# рдПрдХ рдмреВрдЯ рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓. STAMP рд╡реИрд░рд┐рдПрдмрд▓ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред #
# #
# рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп: рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ #
############################################ ##########################
рдЯрд╛рдЗрдорд╕реНрдкреЗрдХ()
{
STAMP='$(echo `date +'%b %d %T %:z'` `hostname`) " return 0
}
############################################ ##########################
# log_success_msg () #
# рдЙрдкрдпреЛрдЧ: log_success_msg ["рд╕рдВрджреЗрд╢"] #
# #
# рдЙрджреНрджреЗрд╢реНрдп: рд╕реНрдХреНрд░реАрди рдкрд░ рдПрдХ рд╕рдлрд▓ рд╕реНрдерд┐рддрд┐ рд╕рдВрджреЗрд╢ рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВ рдФрд░ #
# рдПрдХ рдмреВрдЯ рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓. #
# #
# рдЗрдирдкреБрдЯ: $@ - рд╕рдВрджреЗрд╢ #
# #
# рд╡рд╛рдкрд╕реА рдорд╛рди: рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ #
############################################ ##########################
рд▓реЙрдЧ_рд╕рдлрд▓рддрд╛_рд╕рдВрджреЗрд╢()
{
/bin/echo -n -e "${BMPREFIX}${@}"
/bin/echo -e "${CURS_ZERO}${SUCCESS_PREFIX}${SET_COL}${SUCCESS_SUFFIX}"
# рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдЧреИрд░-рдореБрджреНрд░рдг рдпреЛрдЧреНрдп рд╡рд░реНрдг рд╣рдЯрд╛рдПрдВ logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'`
рд╕рдордп-рдХрд▓реНрдкрдирд╛
/bin/echo -e "${STAMP} ${logmessage} рдареАрдХ рд╣реИ" >> ${BOOTLOG}
рд╡рд╛рдкрд╕реА 0
}
рд▓реЙрдЧ_рд╕рдлрд▓рддрд╛_msg2()
{
/bin/echo -n -e "${BMPREFIX}${@}"
/bin/echo -e "${CURS_ZERO}${SUCCESS_PREFIX}${SET_COL}${SUCCESS_SUFFIX}" echo " OK" >> ${BOOTLOG}
рд╡рд╛рдкрд╕реА 0
}
############################################ ##########################
# log_failure_msg () #
# рдЙрдкрдпреЛрдЧ: log_failure_msg ["рд╕рдВрджреЗрд╢"] #
# #
# рдЙрджреНрджреЗрд╢реНрдп: рд╕реНрдХреНрд░реАрди рдкрд░ рд╡рд┐рдлрд▓рддрд╛ рд╕реНрдерд┐рддрд┐ рд╕рдВрджреЗрд╢ рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВ рдФрд░ #
# рдПрдХ рдмреВрдЯ рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓. #
# #
# рдЗрдирдкреБрдЯ: $@ - рд╕рдВрджреЗрд╢ #
# #
# рд╡рд╛рдкрд╕реА рдорд╛рди: рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ #
############################################ ##########################
log_failure_msg()
{
/bin/echo -n -e "${BMPREFIX}${@}"
/bin/echo -e "${CURS_ZERO}${FAILURE_PREFIX}${SET_COL}${FAILURE_SUFFIX}"
# рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ рдЯрд╛рдЗрдорд╕реНрдкреЗрдХ рд╕реЗ рдЧреИрд░-рдореБрджреНрд░рдг рдпреЛрдЧреНрдп рд╡рд░реНрдгреЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ
logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'`
/bin/echo -e "${STAMP} ${logmessage} рд╡рд┐рдлрд▓" >> ${BOOTLOG}
рд╡рд╛рдкрд╕реА 0
}
log_failure_msg2()
{
/bin/echo -n -e "${BMPREFIX}${@}"
/bin/echo -e "${CURS_ZERO}${FAILURE_PREFIX}${SET_COL}${FAILURE_SUFFIX}" echo "FAIL" >> ${BOOTLOG}
рд╡рд╛рдкрд╕реА 0
}
############################################ ##########################
# рд▓реЙрдЧ_рдЪреЗрддрд╛рд╡рдиреА_рд╕рдВрджреЗрд╢ () #
# рдЙрдкрдпреЛрдЧ: log_warning_msg ["рд╕рдВрджреЗрд╢"] #
# #
# рдЙрджреНрджреЗрд╢реНрдп: рд╕реНрдХреНрд░реАрди рдкрд░ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рд╕реНрдерд┐рддрд┐ рд╕рдВрджреЗрд╢ рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВ рдФрд░ #
# рдПрдХ рдмреВрдЯ рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓. #
# #
# рд╡рд╛рдкрд╕реА рдорд╛рди: рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ #
############################################ ##########################
рд▓реЙрдЧ_рдЪреЗрддрд╛рд╡рдиреА_рд╕рдВрджреЗрд╢()
{
/bin/echo -n -e "${BMPREFIX}${@}"
/bin/echo -e "${CURS_ZERO}${WARNING_PREFIX}${SET_COL}${WARNING_SUFFIX}"
# рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдЧреИрд░-рдореБрджреНрд░рдг рдпреЛрдЧреНрдп рд╡рд░реНрдг рд╣рдЯрд╛рдПрдВ logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'` рдЯрд╛рдЗрдорд╕реНрдкреЗрдХ
/bin/echo -e "${STAMP} ${logmessage} рдЪреЗрддрд╛рд╡рдиреА" >> ${BOOTLOG}
рд╡рд╛рдкрд╕реА 0
}
рд▓реЙрдЧ_рд╕реНрдХрд┐рдк_рдПрдордПрд╕рдЬреА()
{
/bin/echo -n -e "${BMPREFIX}${@}"
/bin/echo -e "${CURS_ZERO}${SKIP_PREFIX}${SET_COL}${SKIP_SUFFIX}"
# рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдЧреИрд░-рдореБрджреНрд░рдг рдпреЛрдЧреНрдп рд╡рд░реНрдг рд╣рдЯрд╛рдПрдВ logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'`
/bin/echo "рдЫреЛрдбрд╝реЗрдВ" >> ${BOOTLOG}
рд╡рд╛рдкрд╕реА 0
}
############################################ ##########################
# log_info_msg () #
# рдЙрдкрдпреЛрдЧ: log_info_msg рд╕рдВрджреЗрд╢ #
# #
# рдЙрджреНрджреЗрд╢реНрдп: рд╕реНрдХреНрд░реАрди рдкрд░ рдПрдХ рд╕реВрдЪрдирд╛ рд╕рдВрджреЗрд╢ рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВ рдФрд░ #
# рдПрдХ рдмреВрдЯ рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓. рдкрд┐рдЫрд▓реА рдиреНрдпреВрд▓рд╛рдЗрди рд╡рд░реНрдг рдореБрджреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред #
# #
# рд╡рд╛рдкрд╕реА рдорд╛рди: рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ #
############################################ ##########################
log_info_msg()
{
/bin/echo -n -e "${BMPREFIX}${@}"
# рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдЧреИрд░-рдореБрджреНрд░рдг рдпреЛрдЧреНрдп рд╡рд░реНрдг рд╣рдЯрд╛рдПрдВ logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'` рдЯрд╛рдЗрдорд╕реНрдкреЗрдХ
/bin/echo -n -e "${STAMP} ${logmessage}" >> ${BOOTLOG}
рд╡рд╛рдкрд╕реА 0
}
log_info_msg2()
{
/bin/echo -n -e "${@}"
# рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдЧреИрд░-рдореБрджреНрд░рдг рдпреЛрдЧреНрдп рд╡рд░реНрдг рд╣рдЯрд╛рдПрдВ logmessage=`echo "${@}" | sed 's/\\\033[^a-zA-Z]*.//g'`
/bin/echo -n -e "${logmessage}" >> ${BOOTLOG}
рд╡рд╛рдкрд╕реА 0
}
############################################ ##########################
# рдореВрд▓реНрдпрд╛рдВрдХрди_рд░рд┐рдЯрд╡рд▓() #
# рдЙрдкрдпреЛрдЧ: рд░рд┐рдЯрд░реНрди рдорд╛рди рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░реЗрдВ рдФрд░ рдЙрдЪрд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдлрд▓рддрд╛ рдпрд╛ рд╡рд┐рдлрд▓рддрд╛ рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВ #
# #
# рдЙрджреНрджреЗрд╢реНрдп: рд╕реВрдЪрдирд╛ рд╕рдВрджреЗрд╢ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛ рдлрд╝рдВрдХреНрд╢рди #
# #
# рд╡рд╛рдкрд╕реА рдорд╛рди: рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ #
############################################ ##########################
рдореВрд▓реНрдпрд╛рдВрдХрди_retval()
{
рд╕реНрдерд╛рдиреАрдп error_value='${?}'
рдпрджрд┐ [${error_value} = 0 ]; рдлрд┐рд░ log_success_msg2
рдЕрдиреНрдп
log_failure_msg2
fi
}
############################################ ##########################
# рдЪреЗрдХ_рд╕рд┐рдЧреНрдирд▓() #
# рдЙрдкрдпреЛрдЧ: рдЪреЗрдХ_рд╕рд┐рдЧреНрдирд▓ [-{рд╕рд┐рдЧреНрдирд▓} | {рд╕рдВрдХреЗрдд} ] #
# #
# рдЙрджреНрджреЗрд╢реНрдп: рд╡реИрдз рд╕рд┐рдЧреНрдирд▓ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред рдпрд╣ рдХрд┐рд╕реА рдПрд▓рдПрд╕рдмреА рдбреНрд░рд╛рдлреНрдЯ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рд╣реИ, #
# рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреЗрддреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдХреНрдпрд╛ #
# рдЪреБрдиреЗ рдЧрдП рд╕рд┐рдЧреНрдирд▓ рдЕрдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдорд╛рдиреНрдп рддрд░реНрдХ рд╣реИрдВред #
# #
# рдЗрдирдкреБрдЯ: рдлреЙрд░реНрдо рдореЗрдВ рдПрдХрд▓ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд╛рди рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдпрд╛ - {рд╕рд┐рдЧреНрдирд▓} рдпрд╛ {рд╕рд┐рдЧреНрдирд▓} #
# #
# рд╡рд╛рдкрд╕реА рдорд╛рди: #
# 0 - рд╕рдлрд▓рддрд╛ (рд╕рдВрдХреЗрдд рдорд╛рдиреНрдп рд╣реИ #
#1 - рд╕рд┐рдЧреНрдирд▓ рд╡реИрдз рдирд╣реАрдВ рд╣реИ #
############################################ ##########################
рдЪреЗрдХ_рд╕рд┐рдЧреНрдирд▓()
{
рд╕реНрдерд╛рдиреАрдп рд╡рд▓рд╕рд┐рдЧ
# рдЕрдорд╛рдиреНрдп рд╕рд┐рдЧреНрдирд▓ рдХреЗ рд▓рд┐рдП рддреНрд░реБрдЯрд┐ рдкреНрд░рдмрдВрдзрди рдЬреЛрдбрд╝реЗрдВ
valsig='-ALRM -HUP -INT -KILL -PIPE -POLL -PROF -TERM -USR1 -USR2' valsig='${valsig} -VTALRM -STKFLT -PWR -WINCH -CHLD -URG -TSTP -TTIN' valsig= "${valsig} -TTOU -STOP -CONT -ABRT -FPE -ILL -QUIT -SEGV -TRAP" valsig='${valsig} -SYS -EMT -BUS -XCPU -XFSZ -0 -1 -2 -3 - 4 -5 -6 -8 -9"
valsig='${valsig} -11 -13 -14 -15'
рдкреНрд░рддрд┐рдзреНрд╡рдирд┐ "${valsig}" | grep -- " ${1} " > /dev/null рдпрджрд┐ [ "${?}" -eq "0" ]; рддрдм
рд╡рд╛рдкрд╕реА 0
рдЕрдиреНрдп
рд╡рд╛рдкрд╕реА 1
fi
}
############################################ ##########################
# check_sig_type() #
# рдЙрдкрдпреЛрдЧ: рдЪреЗрдХ_рд╕рд┐рдЧреНрдирд▓ [-{рд╕рд┐рдЧреНрдирд▓} | {рд╕рдВрдХреЗрдд} ] #
# #
# рдЙрджреНрджреЗрд╢реНрдп: рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рд╕рд┐рдЧреНрдирд▓ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕рдорд╛рдкреНрддрд┐ рд╕рд┐рдЧреНрдирд▓ рд╣реИ рдпрд╛ рдирд┐рдпрдВрддреНрд░рдг рд╕рд┐рдЧреНрдирд▓ #
# рдпрд╣ рдХрд┐рд╕реА рднреА рдПрд▓рдПрд╕рдмреА рдбреНрд░рд╛рдлреНрдЯ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рд╣реИ, рддрдерд╛рдкрд┐, рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ #
# рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреЗрддреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛ рдЙрдирдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдХрд┐рд╕реА # рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИ
# рдкреНрд░реЛрдЧреНрд░рд╛рдо рдпрд╛ рдмрд╕ рдЗрд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред #
# #
# рдЗрдирдкреБрдЯ: рдлреЙрд░реНрдо рдореЗрдВ рдПрдХрд▓ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд╛рди рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдпрд╛ - {рд╕рд┐рдЧреНрдирд▓} рдпрд╛ {рд╕рд┐рдЧреНрдирд▓} #
# #
# рд╡рд╛рдкрд╕реА рдорд╛рди: #
# 0 - рд╕рд┐рдЧреНрдирд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕рдорд╛рдкреНрддрд┐ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ #
#1 - рд╕рд┐рдЧреНрдирд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ #
############################################ ##########################
check_sig_type()
{
рд╕реНрдерд╛рдиреАрдп рд╡рд▓рд╕рд┐рдЧ
# рд╕рдорд╛рдкреНрддрд┐ рд╕рдВрдХреЗрддреЛрдВ рдХреА рд╕реВрдЪреА (рдЖрдо рддреМрд░ рдкрд░ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╡рд╕реНрддреБрдУрдВ рддрдХ рд╕реАрдорд┐рдд) valsig='-ALRM -INT -KILL -TERM -PWR -STOP -ABRT -QUIT -2 -3 -6 -9 -14 -15'
рдкреНрд░рддрд┐рдзреНрд╡рдирд┐ "${valsig}" | grep -- " ${1} " > /dev/null рдпрджрд┐ [ "${?}" -eq "0" ]; рддрдм
рд╡рд╛рдкрд╕реА 0
рдЕрдиреНрдп
рд╡рд╛рдкрд╕реА 1
fi
}
############################################ ##########################
#рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ() #
# #
# рдЙрджреНрджреЗрд╢реНрдп: рдпрджрд┐ рдиреЗрддреГрддреНрд╡рд╣реАрди рдкреНрд░рдгрд╛рд▓реА рдирд╣реАрдВ рд╣реИ рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ #
# #
############################################ ##########################
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ()
{
# рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ
[ "${рд╣реЗрдбрд▓реЗрд╕=0}" = "0" ] && ENTER рдкрдврд╝реЗрдВ
рд╡рд╛рдкрд╕реА 0
}
############################################ ##########################
# рдХреНрдпрд╛ рд╕рдЪ рд╣реИ() #
# #
# рдЙрджреНрджреЗрд╢реНрдп: рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд┐ рдХреЛрдИ рдЪрд░ рд╕рддреНрдп рд╣реИ рдпрд╛ рдирд╣реАрдВ | рд╣рд╛рдБ | 1#
# #
############################################ ##########################
рдХреНрдпрд╛ рд╕рдЪ рд╣реИ()
{
["$1" = "1" ] || ["$1" = "рд╣рд╛рдБ" ] || ["$1" = "рд╕рддреНрдп" ] || ["$1" = "y" ] || ["$1" = "рдЯреА" ]
}
# рдЕрдВрдд /lib/lsb/init-functions
рд╡рд╛рдкрд╕реА 0
рдЕрдиреНрдп
рд╡рд╛рдкрд╕реА 1
fi
}
############################################ ##########################
#рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ() #
# #
# рдЙрджреНрджреЗрд╢реНрдп: рдпрджрд┐ рдиреЗрддреГрддреНрд╡рд╣реАрди рдкреНрд░рдгрд╛рд▓реА рдирд╣реАрдВ рд╣реИ рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ #
# #
############################################ ##########################
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ()
{
# рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ
[ "${рд╣реЗрдбрд▓реЗрд╕=0}" = "0" ] && ENTER рдкрдврд╝реЗрдВ
рд╡рд╛рдкрд╕реА 0
}
############################################ ##########################
# рдХреНрдпрд╛ рд╕рдЪ рд╣реИ() #
# #
# рдЙрджреНрджреЗрд╢реНрдп: рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд┐ рдХреЛрдИ рдЪрд░ рд╕рддреНрдп рд╣реИ рдпрд╛ рдирд╣реАрдВ | рд╣рд╛рдБ | 1#
# #
############################################ ##########################
рдХреНрдпрд╛ рд╕рдЪ рд╣реИ()
{
["$1" = "1" ] || ["$1" = "рд╣рд╛рдБ" ] || ["$1" = "рд╕рддреНрдп" ] || ["$1" = "y" ] || ["$1" = "рдЯреА" ]
}
# рдЕрдВрдд /lib/lsb/init-functions
: рдЬреЗрд░рд╛рд░реНрдб рдмреАрдХрдореИрдиреНрд╕ - [рдИрдореЗрд▓ рд╕рдВрд░рдХреНрд╖рд┐рдд] рдбреАрдЬреЗ рд▓реБрдХрд╛рд╕ - [рдИрдореЗрд▓ рд╕рдВрд░рдХреНрд╖рд┐рдд]
: рдмреНрд░реВрд╕ рдбрдмреНрд╕ - [рдИрдореЗрд▓ рд╕рдВрд░рдХреНрд╖рд┐рдд]
: рдЬреЗрд░рд╛рд░реНрдб рдмреАрдХрдореИрдиреНрд╕ - [рдИрдореЗрд▓ рд╕рдВрд░рдХреНрд╖рд┐рдд] рдбреАрдЬреЗ рд▓реБрдХрд╛рд╕ - [рдИрдореЗрд▓ рд╕рдВрд░рдХреНрд╖рд┐рдд]
: рдмреНрд░реВрд╕ рдбрдмреНрд╕ - [рдИрдореЗрд▓ рд╕рдВрд░рдХреНрд╖рд┐рдд]
: рдПрд▓рдПрдлрдПрд╕ 7.0
: рдПрд▓рдПрдлрдПрд╕ 7.0
mountvirtfs
mountvirtfs
S
S
<рдкрд┐рдЫрд▓рд╛ | рд╡рд┐рд╖рдп-рд╕реВрдЪреА | рдЕрдЧрд▓рд╛>