LINUX.ORG.RU

Как получить определенный PID для завершения приложения


0

0

Привет-с, уважаемое сообщество гуру и начинающих. Прошу помощи в таком вопросе:

запускаются несколько серваков tomcat по разным портам. Их может быть сколь угодно много, 3, 5, 10..

Если сделать команду ps ax | grep java, то выведется их список, их можно отличить не только по PID но и по некоторому паттерну, например по рабочему каталогу в котором они запущены.

Мне нужно в определенный момент запустить скрипт, который убивает процесс томката для определенного рабочего каталога, разумеется я его pid не знаю, и приходится каждый раз получать его pid а затем через kill убивать.. Как можно сделать, чтобы мой скрипт мог получить pid томката по его рабочему каталогу?

Ну например, вот томкаты:

29589 ? Sl 10:48 /usr/lib/jvm/java-6-sun-1.6.0.06/jre/bin/java -Dcatalina.home=../tomcat -Xms128m -Xmx512m -XX:MaxPermSize=256m -Xdebug -jar /opt/cruisecontrol-bin-2.7.1/projects/work-dir1/...

29700 ? Sl 10:48 /usr/lib/jvm/java-6-sun-1.6.0.06/jre/bin/java -Dcatalina.home=../tomcat -Xms128m -Xmx512m -XX:MaxPermSize=256m -Xdebug -jar /opt/cruisecontrol-bin-2.7.1/projects/work-dir2/...

мне надо всегда убивать томкат с work-dir2.

как проще решить эту задачу?

Спасибо за проявленное внимание.

anonymous

Re: Как получить определенный PID для завершения приложения


killTomcat.sh:
#!/bin/sh
kill $(ps ax|grep '../tomcat'|grep -v grep|grep "$1"|cut -d ' ' -f 1)


usage:


killTomcat.sh work-dir2

Slavaz ★★★★★ ()

Re: Как получить определенный PID для завершения приложения

огромное спасибо за это решение! удобнейший и полезнейший скрипт. склоняю голову перед линуксоидным мастерством. :)

anonymous ()

Re: Как получить определенный PID для завершения приложения

Фигня вопрос

TDIR='/work-dir2'
pkill -f "java.*$TDIR"

sdio ★★★★★ ()

Re: Как получить определенный PID для завершения приложения

Вообще-то за такие вопросы полагается наказание в виде недельного принудительного чтения манов без права посещения ЛОРа и ритуальное гугление вплоть до полного просветления.

anonymous ()

Re: Как получить определенный PID для завершения приложения

> Вообще-то за такие вопросы полагается наказание в виде недельного принудительного чтения манов без права посещения ЛОРа и ритуальное гугление вплоть до полного просветления.

трудно не согласиться... но, тогда объясни - зачем нужен ЛОР?

anonymous ()

Re: Как получить определенный PID для завершения приложения

>трудно не согласиться... но, тогда объясни - зачем нужен ЛОР?

членами мерятся, зачем же еще.
Длина члена обратно-пропорциональна длине кода.

sdio ★★★★★ ()

Re: Как получить определенный PID для завершения приложения

>>трудно не согласиться... но, тогда объясни - зачем нужен ЛОР?

> членами мерятся, зачем же еще. > Длина члена обратно-пропорциональна длине кода.

ну в таком случае у тебя самый длинный из всех, судя по примеру кода :)

anonymous ()

Re: Как получить определенный PID для завершения приложения

> трудно не согласиться... но, тогда объясни - зачем нужен ЛОР?

Не, честно, ты задал вопрос в форме "мне лениво разбираться самому, так что расскажите ка мне как сделать XYZ".

Такие вопросы, лично я, не будучи программистом или вообще айтишнегом (читай ГСМ), задавать постеснялся бы, даже с учетом того, что вопрос про скрипты, то есть про область знаний, в которой я почти полный ноль.

Если бы мне нужно было написать скрипт, я бы сел, почитал маны, погуглил (а твоя задача гуглению поддается без всяких проблем), попытался бы чего-нить сам накорябать, а потом только, если бы мой скрипт так и не заработал, пошел бы на ЛОР, с просьбой объяснить сколько раз меня в детстве роняли, сколько ошибок у меня в ДНК и как скрипт написать правильно.

Обрати внимание - я не сисадмин и в скриптовании разбираться не обязан, в отличии о тех, кто пытается регулярно замочить томкат...

anonymous ()

Re: Как получить определенный PID для завершения приложения

Бесят такие нравоучители как ты! Я не спрашивал готового решения. Я спросил как можно сделать эту задачу проще. Ответили бы - смотри AWK, или смотри в сторону команды pkill. И я был бы весьма доволен. Но добрые и бескорыстные люди, которым было не трудно, ибо этот вопрос для них раз плюнуть - привели сразуже пример. Несомненно это сверх ожиданий для этой задачи, и поэтому моя благодарность для них безмерна.

Так что вопрос просто концептуальный - смотри в эту сторону, смотри в ту. А не в гугл. Иначе с такой постановкой - ваще - любому человеку просто нужно засесть за книги, досконально изучить ядро, все документации на зубок и несомненно он это сделает спустя n-количества лет.

anonymous ()

Re: Как получить определенный PID для завершения приложения

> Бесят такие нравоучители как ты!

А меня такие вопрошающие как ты. Мы квиты? ;) Еще раз, тебе не кажется странным, что я, типичный ГСМ, решаю подобные вопросы без задавания вопросов на ЛОРе, а ты, неизвестно кто - нет?

> Но добрые и бескорыстные люди, которым было не трудно, ибо этот вопрос для них раз плюнуть - привели сразуже пример.

В данном случае, желание повыделываться и любовь к своей работе (своему хобби) перевесила желание высказать тебе все, чего ты достоин. А еще говорят, что на ЛОРе один флейм, конструктивных ответов не дождесси. В общем, я просто компенсирую либерализьм отвечавших... ;)

> Иначе с такой постановкой - ваще - любому человеку просто нужно засесть за книги, досконально изучить ядро, все документации на зубок и несомненно он это сделает спустя n-количества лет.

Не преувеличивай, достаточно просто погуглить. ;) А вообще читай хауту "как правильно задвать вопросы" от Эрика Реймонда.

anonymous ()

Re: Как получить определенный PID для завершения приложения

Да ты еще и жалкий зануда. Тьфу на тебя трижды, и точка! :) Муахахахаха! (далее следует нечеловеческие звуки в виде демонического смеха, с одновременно закинутой головой назад)

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.