Узнать PID
Модераторы: /dev/random, Модераторы разделов
-
Devider
- Сообщения: 476
- ОС: GNU/Linux
Узнать PID
Нужно автоматизировать следующее: убить процесс томката (именно убить, не рестартануть) подождать пару сек и запустить его опять.
Сейчас это делается через top, выяснение PID потом kill -9 xxx;sleep 3; /etc/init.d/tomcat start. Как узнавать ID процесса в скрипте и убить?
Сейчас это делается через top, выяснение PID потом kill -9 xxx;sleep 3; /etc/init.d/tomcat start. Как узнавать ID процесса в скрипте и убить?
-
smaharbA
- Сообщения: 229
- ОС: Windows Vista
Re: Узнать PID
pgrep чегототам
а вернее
pkill -9 java
с проверками конечно
а вернее
pkill -9 java
с проверками конечно
Я конечно далек от мысли...(с)
-
/dev/random
- Администратор
- Сообщения: 5447
- ОС: Gentoo
Re: Узнать PID
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.
А это может убить лишнее, применяйте только если совсем нет другого выхода.
-
Poor Fred
- Сообщения: 1575
- Статус: Pygoscelis papua
- ОС: Gentoo Linux, FreeBSD
Re: Узнать PID
Почти такой же вопрос. Есть сервис rsync и есть rsync, запускающийся из cron'а для синхронизации. Последний, бывает, подвисает. Как можно узнать его PID прибить только его?
Убить всех человеков!
-
/dev/random
- Администратор
- Сообщения: 5447
- ОС: Gentoo
-
Devider
- Сообщения: 476
- ОС: GNU/Linux
Re: Узнать PID
Спасибо большое. )
ЗЫ:
Стоп не катит - томкат стопаясь сбрасывает все кэши (что долго но не критично), а потом говорит адью балансеру (что не долго но критично) и кластер разваливается. Поэтому остается один выход - жестокое убийство с быстрой реинкарнацией.
ЗЫ:
/dev/random писал(а): ↑01.03.2010 12:37По-хорошему, нормальные init.d-скрипты умеют /etc/init.d/... stop.
Стоп не катит - томкат стопаясь сбрасывает все кэши (что долго но не критично), а потом говорит адью балансеру (что не долго но критично) и кластер разваливается. Поэтому остается один выход - жестокое убийство с быстрой реинкарнацией.
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Узнать PID
вот так делаю я:
сам скрипт запускает crond, с правами root'а, и этот скрипт запускает другой скрипт, но у же с правами необходимого юзера (через sudo -u, руту это обычно можно)
Код: Выделить всё
#!/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, руту это обычно можно)
-
smaharbA
- Сообщения: 229
- ОС: Windows Vista
Re: Узнать PID
pid - файлы уже не в моде, в томкате пока есть но не факт
да и наличие его даже при старте скрипта тоже не факт, особо такой байды как томкат
да и наличие его даже при старте скрипта тоже не факт, особо такой байды как томкат
Я конечно далек от мысли...(с)
-
smaharbA
- Сообщения: 229
- ОС: Windows Vista
Re: Узнать PID
Я конечно далек от мысли...(с)
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Узнать PID
и где у меня "pid_file(s)"?
идентификатор процесса я получаю, но причём тут файл?
-
smaharbA
- Сообщения: 229
- ОС: Windows Vista
Re: Узнать PID
пост не Вам предназначен был, приношу извинения если высказывание воспринято не однозначно
Я конечно далек от мысли...(с)
-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: Узнать 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
$Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
Спасибо сказали:
-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: Узнать PID
если самое простое и эффективное средство вышло из текущей моды — смените моду ещё разок.
от процесса не требуется усилий для того, чтобы вы могли узнать его номер. выше я это продемонстрировал.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Узнать PID
угу. на самом деле это самое нормальное решение. лично я перемудрил чё-то, может не то скурил, или хотел кому-то что-то доказать... не помню.
всё ок. хотя pid-файл - ИМХО всё-же проще и лучше.
-
Poor Fred
- Сообщения: 1575
- Статус: Pygoscelis papua
- ОС: Gentoo Linux, FreeBSD
Re: Узнать PID
О, отлично, спасибо! Я знал, что это должно быть очень просто!
pkill не очень удобен, т.к. у rsync длиннющая строка аргументов.
Убить всех человеков!
-
MiK13
- Сообщения: 1289
- ОС: Linux Debian
Re: Узнать PID
А чем не устраивает pkill -x или skill ?/dev/random писал(а): ↑01.03.2010 12:37А это может убить лишнее, применяйте только если совсем нет другого выхода.