powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Не срабатывает service *** stop
6 сообщений из 6, страница 1 из 1
Не срабатывает service *** stop
    #37852672
GorloPavel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте. Почему не срабатывает 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
Не срабатывает service *** stop
    #37852920
Пухлый
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GorloPavel,

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

В servicePidFile правильный PID прописан?
Да.
...
Рейтинг: 0 / 0
Не срабатывает service *** stop
    #37853047
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
раньше проверяли kill -0 $pid, а теперь checkproc используют
...
Рейтинг: 0 / 0
Не срабатывает service *** stop
    #37853177
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Не срабатывает service *** stop
    #37853263
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфиловдля проверки запущенности Ожидал увидеть чего-то вроде
Код: sql
1.
2.
else
    echo "Как тут все запущено!!!"
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Не срабатывает service *** stop
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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