The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"как получить PID запущенного процесса"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [ Отслеживать ]

"как получить PID запущенного процесса"  
Сообщение от Dimkap (??) on 21-Апр-08, 13:26 
Запускается java прилада командой /usr/java/jre1.6.0_06/bin/java -Xmx128m -jar /home/notes/JavaAgent.jar
как получить PID получившегося процесса?
Нужно контролировать, чтобы был запущен только один экземпляр процесса.
Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "как получить PID запущенного процесса"  
Сообщение от angra (ok) on 21-Апр-08, 14:06 
Если в баше, то $!
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "как получить PID запущенного процесса"  
Сообщение от Dimkap (??) on 21-Апр-08, 14:12 
>Если в баше, то $!

например скрипт выглядит так:
-------
#!/bin/bash                                                                                                                                                    
                                                                                                                                          
/usr/java/jre1.6.0_06/bin/java -Xmx128m -jar /home/notes/JavaAgent.jar
--------
он запускается кроном
каким образом сделать проверку перед запуском, что предыдущий процесс закончен, если процесс не закончен не надо запускать.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "как получить PID запущенного процесса"  
Сообщение от angra (ok) on 21-Апр-08, 19:28 
Наиболее распространенный алгоритм для вашей задачи при условии синхронного выполнения:
1. Проверяем наличие лок-файла(например /tmp/JavaAgent.lock), если он есть то выходим
2. создаем лок-файл
3. запускаем все что нужно
4. убираем лок-файл и выходим.
Если запускаемый процесс асинхронный(то есть остается работать и сразу возвращает управление), то придется таки получать его PID, сохранять в файлике и проверять наличие процесса с этим pid, например через /proc
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "как получить PID запущенного процесса"  
Сообщение от Gennadi email(??) on 22-Апр-08, 18:51 

так:
----------------------
#!/bin/bash
JA_PID=/var/run/JavaAgent.pid
/usr/java/jre1.6.0_06/bin/java -Xmx128m -jar /home/notes/JavaAgent.jar
echo $! > $JA_PID

echo `cat $JA_PID`
--------------------


или так:
-----------------------
#!/bin/bash
program="JavaAgent.jar"

/usr/java/jre1.6.0_06/bin/java -Xmx128m -jar /home/notes/JavaAgent.jar

PID=`ps -aef | grep "$program" | grep -v grep | awk '{print $2}'`

echo $PID
-----------------------

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "как получить PID запущенного процесса"  
Сообщение от b00ba on 22-Апр-08, 20:01 
только не надо забывать, что прозесс может умереть или крашанутся, а pid файл останется
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "как получить PID запущенного процесса"  
Сообщение от Gennadi email(??) on 22-Апр-08, 20:36 
>только не надо забывать, что прозесс может умереть или крашанутся, а pid
>файл останется

Ну если уж... то так?

#!/bin/bash
#
PROGRAM="JavaAgent.jar"
JA_PID=/var/run/JavaAgent.pid
PROG_BIN="/usr/java/jre1.6.0_06/bin/java -Xmx128m -jar /home/notes/JavaAgent.jar"
PID=`ps -aef | grep "$PROGRAM" | grep -v grep | awk '{print $2}'`

case "$1" in
  start)

    if [ ! -z $PID ]
    then
    echo -n "Daemon JavaAgent is running"
    echo ""
    else
    echo -n "Starting JavaAgent: "
    $PROG_BIN > /dev/null 2>&1 &
    echo $! > $JA_PID
    echo "Daemon JavaAgent started. PID:$!"
    echo ""
    fi
    ;;
  stop)
    echo -n "Shutting down JavaAgent: "
    echo ""
    for i in $PID; do
    kill -9 $i
    rm -f $JA_PID
    done
    echo -n "Daemon JavaAgent is down."
    echo ""
    ;;
  restart)
    $0 stop
    $0 start

    ;;
  status)
    if [ ! -z $PID ]
    then
    echo -n "Daemon JavaAgent is running"
    echo ""
    else
    echo -n "Daemon JavaAgent is down."
    echo ""
    fi
    ;;
  *)
    echo "Usage: JavaAgent {start|stop|restart|status}"
    exit 1
    
esac

exit 0


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "как получить PID запущенного процесса"  
Сообщение от Gennadi email(??) on 22-Апр-08, 21:42 
PC: Если всё-таки будут запущены несколько процессов "JavaAgent", то будет лучше блок "status)" переписать так:


#!/bin/bash
#
PROGRAM="JavaAgent.jar"
JA_PID=/var/run/JavaAgent.pid
PROG_BIN="/usr/java/jre1.6.0_06/bin/java -Xmx128m -jar /home/notes/JavaAgent.jar"
PID=`ps -aef | grep "$PROGRAM" | grep -v grep | awk '{print $2}'`

case "$1" in
  start)

    if [ ! -z $PID ]
    then
    echo -n "Daemon JavaAgent is running"
    echo ""
    else
    echo -n "Starting JavaAgent: "
    echo ""
    $PROG_BIN > /dev/null 2>&1 &
    echo $! > $JA_PID
    echo "Daemon JavaAgent started. PID:$!"
    echo ""
    fi
    ;;
  stop)
    echo -n "Shutting down JavaAgent: "
    echo ""
    for i in $PID; do
    kill -9 $i
    rm -f $JA_PID
    done
    echo -n "Daemon JavaAgent is down."
    echo ""
    ;;
  restart)
    $0 stop
    $0 start

    ;;
  status)
    STATUS=`ps -aef | grep "$PROGRAM" | grep -v grep | awk '{print $2}' | head -1`
    if [ ! -z $STATUS ]
    then
    echo -n "Daemon JavaAgent is running"
    echo ""
    for i in $PID; do
    echo PID:$i
    done
    echo ""
    else
    echo -n "Daemon JavaAgent is down."
    echo ""
    fi
    ;;
  *)
    echo "Usage: JavaAgent {start|stop|restart|status}"
    exit 1
    
esac

exit 0

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру