рдСрдирд╡рд░реНрдХреНрд╕ рд▓рд┐рдирдХреНрд╕ рдФрд░ рд╡рд┐рдВрдбреЛрдЬ рдСрдирд▓рд╛рдЗрди рд╡рд░реНрдХрд╕реНрдЯреЗрд╢рди

рдкреНрд░рддреАрдХ рдЪрд┐рдиреНрд╣

рд╡рд░реНрдХрд╕реНрдЯреЗрд╢рди рдХреЗ рд▓рд┐рдП рдореБрдлреНрдд рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдСрдирд▓рд╛рдЗрди

<рдкрд┐рдЫрд▓рд╛ | рд╡рд┐рд╖рдп-рд╕реВрдЪреА | рдЕрдЧрд▓рд╛>

рдбреА.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

рдореЗрдиреНрдпреВ

OnWorks рдкрд░ рд╢реАрд░реНрд╖ OS рдХреНрд▓рд╛рдЙрдб рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ: