Узнать PID

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

Аватара пользователя
Devider
Сообщения: 476
ОС: GNU/Linux

Узнать PID

Сообщение Devider »

Нужно автоматизировать следующее: убить процесс томката (именно убить, не рестартануть) подождать пару сек и запустить его опять.
Сейчас это делается через top, выяснение PID потом kill -9 xxx;sleep 3; /etc/init.d/tomcat start. Как узнавать ID процесса в скрипте и убить?
Спасибо сказали:
smaharbA
Сообщения: 229
ОС: Windows Vista

Re: Узнать PID

Сообщение smaharbA »

pgrep чегототам

а вернее
pkill -9 java

с проверками конечно
Я конечно далек от мысли...(с)
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5447
ОС: Gentoo

Re: Узнать PID

Сообщение /dev/random »

Devider писал(а):
01.03.2010 10:33
Нужно автоматизировать следующее: убить процесс томката (именно убить, не рестартануть) подождать пару сек и запустить его опять.
Сейчас это делается через top, выяснение PID потом kill -9 xxx;sleep 3; /etc/init.d/tomcat start. Как узнавать ID процесса в скрипте и убить?

По-хорошему, нормальные init.d-скрипты умеют /etc/init.d/... stop. Если нет, советую поискать соответствующий pid-файл в /var/run. Все вменяемые демоны создают такой и пишут в него свой PID.

smaharbA писал(а):
01.03.2010 10:36
pgrep чегототам

а вернее
pkill -9 java

с проверками конечно

А это может убить лишнее, применяйте только если совсем нет другого выхода.
Спасибо сказали:
Аватара пользователя
Poor Fred
Сообщения: 1575
Статус: Pygoscelis papua
ОС: Gentoo Linux, FreeBSD

Re: Узнать PID

Сообщение Poor Fred »

Почти такой же вопрос. Есть сервис rsync и есть rsync, запускающийся из cron'а для синхронизации. Последний, бывает, подвисает. Как можно узнать его PID прибить только его?
Убить всех человеков!
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5447
ОС: Gentoo

Re: Узнать PID

Сообщение /dev/random »

Poor Fred писал(а):
01.03.2010 13:03
Почти такой же вопрос. Есть сервис rsync и есть rsync, запускающийся из cron'а для синхронизации. Последний, бывает, подвисает. Как можно узнать его PID прибить только его?

pkill'айте его по ком. строке (ключ -f)
Спасибо сказали:
Аватара пользователя
Devider
Сообщения: 476
ОС: GNU/Linux

Re: Узнать PID

Сообщение Devider »

Спасибо большое. )

ЗЫ:
/dev/random писал(а):
01.03.2010 12:37
По-хорошему, нормальные init.d-скрипты умеют /etc/init.d/... stop.


Стоп не катит - томкат стопаясь сбрасывает все кэши (что долго но не критично), а потом говорит адью балансеру (что не долго но критично) и кластер разваливается. Поэтому остается один выход - жестокое убийство с быстрой реинкарнацией.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Узнать PID

Сообщение drBatty »

вот так делаю я:

Код: Выделить всё

#!/bin/sh

DT=`date +'%Y-%m-%d %H:%M:%S'`
DT=">$DT"

export HOME="/home/amule"
cd $HOME

LOG=".aMule/logfile"

#echo $DT >> /var/log/amule_ctrl.log

echo -e "\033[32m$DT\033[0m" >> $LOG
echo -e "\033[32m$DT\033[0m"

ps uax | grep "amuled"

AMULE_CTL="ps uax | sed -rn 's/^amule\s+([0-9]+)\s+.*amuled\s+-f$/\1/;T;p;q'"
AMULE_PID=`eval $AMULE_CTL`

if [ -z "$AMULE_PID" ]; then
    echo "$DT amule crashed. restarting..." >> $LOG
    sudo -u amule $HOME/scripts/root_start
    sleep 5
    AMULE_PID=`eval $AMULE_CTL`
    echo "$DT amule restaring, new PID: $AMULE_PID." >> $LOG
else
    echo "$DT amule_ctrl OK, PID: $AMULE_PID." >> $LOG
fi

exit 0

сам скрипт запускает crond, с правами root'а, и этот скрипт запускает другой скрипт, но у же с правами необходимого юзера (через sudo -u, руту это обычно можно)
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
smaharbA
Сообщения: 229
ОС: Windows Vista

Re: Узнать PID

Сообщение smaharbA »

pid - файлы уже не в моде, в томкате пока есть но не факт
да и наличие его даже при старте скрипта тоже не факт, особо такой байды как томкат
Я конечно далек от мысли...(с)
Спасибо сказали:
smaharbA
Сообщения: 229
ОС: Windows Vista

Re: Узнать PID

Сообщение smaharbA »

Poor Fred писал(а):
01.03.2010 13:03
Почти такой же вопрос. Есть сервис rsync и есть rsync, запускающийся из cron'а для синхронизации. Последний, бывает, подвисает. Как можно узнать его PID прибить только его?



примерно, но не факт...

Код: Выделить всё

ps -p `pgrep -d, rsync` -o command=
Я конечно далек от мысли...(с)
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Узнать PID

Сообщение drBatty »

smaharbA писал(а):
01.03.2010 15:21
pid - файлы уже не в моде, в томкате пока есть но не факт

и где у меня "pid_file(s)"?
идентификатор процесса я получаю, но причём тут файл?
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
smaharbA
Сообщения: 229
ОС: Windows Vista

Re: Узнать PID

Сообщение smaharbA »

drBatty писал(а):
01.03.2010 16:26
и где у меня "pid_file(s)"?
идентификатор процесса я получаю, но причём тут файл?


пост не Вам предназначен был, приношу извинения если высказывание воспринято не однозначно
Я конечно далек от мысли...(с)
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Узнать PID

Сообщение sash-kan »

Poor Fred писал(а):
01.03.2010 13:03
Почти такой же вопрос. Есть сервис rsync и есть rsync, запускающийся из cron'а для синхронизации. Последний, бывает, подвисает. Как можно узнать его PID прибить только его?
вариант:
задание в кроне:
rsync blablabla & echo $! > /path/to/pid.file
убить rsync:
kill $(cat /path/to/pid.file)

демонстрация:

Shell

$ sh -c 'sleep 10 & echo vot on - $! ; ps' vot on - 26650 PID TTY TIME CMD 14507 pts/4 00:00:04 bash 26649 pts/4 00:00:00 sh 26650 pts/4 00:00:00 sleep 26651 pts/4 00:00:00 ps $
именно 26650 и было бы записано в файл.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Узнать PID

Сообщение sash-kan »

smaharbA писал(а):
01.03.2010 15:21
pid - файлы уже не в моде, в томкате пока есть но не факт
если самое простое и эффективное средство вышло из текущей моды — смените моду ещё разок.
от процесса не требуется усилий для того, чтобы вы могли узнать его номер. выше я это продемонстрировал.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Узнать PID

Сообщение drBatty »

sash-kan писал(а):
01.03.2010 23:04
если самое простое и эффективное средство вышло из текущей моды — смените моду ещё разок.
от процесса не требуется усилий для того, чтобы вы могли узнать его номер. выше я это продемонстрировал.

угу. на самом деле это самое нормальное решение. лично я перемудрил чё-то, может не то скурил, или хотел кому-то что-то доказать... не помню.

smaharbA писал(а):
01.03.2010 16:41
пост не Вам предназначен был, приношу извинения если высказывание воспринято не однозначно

всё ок. хотя pid-файл - ИМХО всё-же проще и лучше.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
Poor Fred
Сообщения: 1575
Статус: Pygoscelis papua
ОС: Gentoo Linux, FreeBSD

Re: Узнать PID

Сообщение Poor Fred »

sash-kan писал(а):
01.03.2010 22:53
rsync blablabla & echo $! > /path/to/pid.file

О, отлично, спасибо! Я знал, что это должно быть очень просто!

pkill не очень удобен, т.к. у rsync длиннющая строка аргументов.
Убить всех человеков!
Спасибо сказали:
MiK13
Сообщения: 1289
ОС: Linux Debian

Re: Узнать PID

Сообщение MiK13 »

/dev/random писал(а):
01.03.2010 12:37
smaharbA писал(а):
01.03.2010 10:36
pgrep чегототам
а вернее
pkill -9 java

с проверками конечно
А это может убить лишнее, применяйте только если совсем нет другого выхода.
А чем не устраивает pkill -x или skill ?
Спасибо сказали: