Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Не срабатывает service *** stop / 6 сообщений из 6, страница 1 из 1
25.06.2012, 06:35
    #37852672
GorloPavel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не срабатывает service *** stop
Здравствуйте. Почему не срабатывает service stop? Данный скрип отлично работает на Debian 6. После переноса на ClearOS он работает частично. К примеру вот эта функция всегда возвращает 1, хотя каталог-файл существует.

Код: powershell
1.
2.
3.
4.
5.
6.
7.
# Returns 0 if the process with PID $1 is running.
function checkProcessIsRunning {
   local pid="$1"
   if [ -z "$pid" -o "$pid" == " " ]; then return 1; fi
   if [ ! -e /proc/$pid ]; then return 1; fi
   return 0;
}



Полный скрипт:

Код: powershell
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.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
#!/bin/bash
#
# bookhub
#
# chkconfig: - 64 36
# description:  Books Hub Server.
# processname: bookhub
# config: /etc/bookshub/server.cfg
# pidfile: /home/sakhsl/bookhub/bookhub.pid

# Set this to your Java installation
JAVA_HOME=/usr/lib/java
 
serviceNameLo="bookhub"                                    # service name with the first letter in lowercase
serviceName="Books Hub Server"                             # service name
serviceUser="sakhsl"                                       # OS user name for the service
serviceGroup="sakhsl"                                      # OS group name for the service
serviceUserDir="/home/$serviceUser/$serviceNameLo"
applDir="$serviceUserDir"                                  # home directory of the service application
serviceLogFile="$serviceUserDir/$serviceNameLo.log"        # log file for StdOut/StdErr
servicePidFile="$serviceUserDir/$serviceNameLo.pid"        # name of PID file (PID = process ID number)
maxShutdownTime=15                                         # maximum number of seconds to wait for the daemon to terminate normally
javaExe="$JAVA_HOME/bin/java"                              # file name of the Java application launcher executable
javaArgs="-jar $applDir/$serviceNameLo.jar"                # arguments for Java launcher
javaCommandLine="$javaExe $javaArgs"                       # command line to start the Java service application
javaCommandLineKeyword="$serviceNameLo.jar"                # a keyword that occurs on the commandline, used to detect an already running service process and to distinguish it from others
 
# Makes the file $1 writable by the group $serviceGroup.
function makeFileWritable {
   local filename="$1"
   touch $filename || return 1
   chgrp $serviceGroup $filename || return 1
   chmod g+w $filename || return 1
   return 0; }
 
# Returns 0 if the process with PID $1 is running.
function checkProcessIsRunning {
   local pid="$1"
   if [ -z "$pid" -o "$pid" == " " ]; then return 1; fi
   if [ ! -e /proc/$pid ]; then return 1; fi  
   return 0; 
}
 
# Returns 0 if the process with PID $1 is our Java service process.
function checkProcessIsOurService {
   local pid="$1"
   if [ "$(ps -p $pid --no-headers -o comm)" != "$javaCommand" ]; then return 1; fi
   grep -q --binary -F "$javaCommandLineKeyword" /proc/$pid/cmdline
   if [ $? -ne 0 ]; then return 1; fi
   return 0; 
}
 
# Returns 0 when the service is running and sets the variable $pid to the PID.
function getServicePID {
   if [ ! -f $servicePidFile ]; then return 1; fi
   pid="$(<$servicePidFile)"
   checkProcessIsRunning $pid || return 1
   checkProcessIsOurService $pid || return 1
   return 0; 
}
 
function startServiceProcess {
   cd $applDir || return 1
   rm -f $servicePidFile
   makeFileWritable $servicePidFile || return 1
   makeFileWritable $serviceLogFile || return 1
   cmd="nohup $javaCommandLine >>$serviceLogFile 2>&1 & echo \$! >$servicePidFile"
   su -m $serviceUser -s $SHELL -c "$cmd" || return 1
   sleep 0.1
   pid="$(<$servicePidFile)"
   if checkProcessIsRunning $pid; then :; else
      echo -ne "\n$serviceName start failed, see logfile."
      return 1
   fi
   return 0; }
 
function stopServiceProcess {
   kill $pid || return 1
   for ((i=0; i<maxShutdownTime*10; i++)); do
      checkProcessIsRunning $pid
      if [ $? -ne 0 ]; then
         rm -f $servicePidFile
         return 0
         fi
      sleep 0.1
      done
   echo -e "\n$serviceName did not terminate within $maxShutdownTime seconds, sending SIGKILL..."
   kill -s KILL $pid || return 1
   local killWaitTime=15
   for ((i=0; i<killWaitTime*10; i++)); do
      checkProcessIsRunning $pid
      if [ $? -ne 0 ]; then
         rm -f $servicePidFile
         return 0
         fi
      sleep 0.1
      done
   echo "Error: $serviceName could not be stopped within $maxShutdownTime+$killWaitTime seconds!"
   return 1; }
 
function startService {
   getServicePID
   if [ $? -eq 0 ]; then echo -n "$serviceName is already running"; RETVAL=0; return 0; fi
   echo -n "Starting $serviceName   "
   startServiceProcess
   if [ $? -ne 0 ]; then RETVAL=1; echo "failed"; return 1; fi
   echo "started PID=$pid"
   RETVAL=0
   return 0; }
 
function stopService {
   getServicePID
   if [ $? -ne 0 ]; then echo -n "$serviceName is not running"; RETVAL=0; echo ""; return 0; fi
   echo -n "Stopping $serviceName   "
   stopServiceProcess
   if [ $? -ne 0 ]; then RETVAL=1; echo "failed"; return 1; fi
   echo "stopped PID=$pid"
   RETVAL=0
   return 0; }
 
function checkServiceStatus {
   echo -n "Checking for $serviceName:   "
   if getServicePID; then
    echo "running PID=$pid"
    RETVAL=0
   else
    echo "stopped"
    RETVAL=3
   fi
   return 0; }

function main {
   RETVAL=0
   case "$1" in
      start)                                               # starts the Java program as a Linux service
         startService
         ;;
      stop)                                                # stops the Java program service
         stopService
         ;;
      restart)                                             # stops and restarts the service
         stopService && startService
         ;;
      status)                                              # displays the service status
         checkServiceStatus
         ;;
      *)
         echo "Usage: $0 {start|stop|restart|status}"
         exit 1
         ;;
      esac
   exit $RETVAL
}
 
main $1


...
Рейтинг: 0 / 0
25.06.2012, 10:56
    #37852920
Пухлый
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не срабатывает service *** stop
GorloPavel,

В servicePidFile правильный PID прописан?
...
Рейтинг: 0 / 0
25.06.2012, 11:13
    #37852971
GorloPavel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не срабатывает service *** stop
ПухлыйGorloPavel,

В servicePidFile правильный PID прописан?
Да.
...
Рейтинг: 0 / 0
25.06.2012, 11:43
    #37853047
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не срабатывает service *** stop
раньше проверяли kill -0 $pid, а теперь checkproc используют
...
Рейтинг: 0 / 0
25.06.2012, 12:52
    #37853177
Андрей Панфилов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не срабатывает service *** stop
GorloPavel,

гм, у меня везде такой вот код для проверки запущенности:

Код: php
1.
2.
3.
4.
5.
6.
7.
is_alive() {
  if [ -d /proc ]; then
    [ -r /proc/$1 -a "x" != "x$1" ]
  else
    ps -p $1 2>/dev/null | grep -q $1
  fi
}
...
Рейтинг: 0 / 0
25.06.2012, 13:38
    #37853263
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не срабатывает service *** stop
Андрей Панфиловдля проверки запущенности Ожидал увидеть чего-то вроде
Код: sql
1.
2.
else
    echo "Как тут все запущено!!!"
...
Рейтинг: 0 / 0
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Не срабатывает service *** stop / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]