-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathread_notify_from_log_init_d.sh
108 lines (93 loc) · 2.99 KB
/
read_notify_from_log_init_d.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#!/bin/bash
# 15 aug 2017 Дмитрий Тейковцев [email protected]
# Пример скрипта типа скриптов в /etc/init.d но на чистом bash для тестового задания
# описание задания находится в файле read_notify_from_log.sh
# без сомнения данный скрипт лучше реализовывать готовыми инструментами в используемой ОС
# типа /sbin/openrc-run или /sbin/runscript но как пример скрипта на bash думаю вполне подойдет
configfile="/home/daimon/devel/PDFfiller/read_notify_from_log.conf"
programmfile="/home/daimon/devel/PDFfiller/read_notify_from_log.sh"
function usage(){
echo "USAGE: $0 < start | stop | resume | suspend | chekcfg | debug > "
exit
}
function getpids(){
if [ -f ${pid} ] ; then
mainpid=`cat ${pid}`
children=`pgrep -P ${mainpid}`
else
echo "not found pid file "${pid}
exit
fi
}
function chekcfg(){
# парсим параметры из конфигурационного файла и подготавливаем строку для запуска программы
paramstring=""
if [ -n "${filename}" ] ; then
paramstring=${paramstring}" -f "${filename}
else
echo "need set parameter <filename> in configfile"
exit
fi
if [ -n "${mailto}" ] ; then
paramstring=${paramstring}" -m "${mailto}
else
echo "need set parameter <mailto> in configfile"
exit
fi
if [ -n "${triggercount}" ] ; then
paramstring=${paramstring}" -c "${triggercount}
fi
if [ -n "${triggervalue}" ] ; then
paramstring=${paramstring}" -x "${triggervalue}
fi
if [ -n "${colnum}" ] ; then
paramstring=${paramstring}" -n "${colnum}
fi
if [ -n "${log}" ] ; then
paramstring=${paramstring}" -l "${log}
fi
if [ -n "${pid}" ] ; then
paramstring=${paramstring}" -p "${pid}
fi
}
# Инклудим конфигурационный файл
. ${configfile}
# если параметр не передан выводим справку
if [ $# -lt 1 ] ; then
usage
fi
# обрабатываем параметр коммандной строки
case $1 in
chekcfg)
chekcfg
echo "command line:"
echo $programmfile $paramstring
echo
echo "parameters in script:"
bash $programmfile $paramstring -v
;;
start)
chekcfg
bash ./read_notify_from_log.sh $paramstring > /dev/null 2>&1 &
;;
debug)
chekcfg
bash ./read_notify_from_log.sh $paramstring -d
;;
resume)
getpids
kill -1 ${mainpid} ${children}
;;
suspend)
getpids
kill -6 ${mainpid} ${children}
;;
stop)
getpids
kill -15 ${mainpid} ${children}
;;
*)
usage
;;
esac
# end of file