передать в kill id процесса (Зная имя процесса передать в kill его id (ptree| grep run.sh| kill -9))

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

Модератор: /dev/random

Tankiro
Сообщения: 23

передать в kill id процесса

Сообщение Tankiro » 05.02.2016 15:52

Стоит задача автоматом передать в kill id процеса.
Допустим крутится основной и дочерний процессы

1111 /run.sh
222 /bin/ars/run.sh

Руками мы можем подставить в kill -9 1111 222
и таким образом убить эти процессы.
Но как это сделать автоматически, зная только имя этого процесса (run.sh)

Из общей кучи процессов мы их можем выбрать с помощью grep (ptree| grep run.sh). Но вот как передать pidы в kill - не знаю.
При этом нужно обязательно убить основной и дочерний процессы.
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 15821
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: передать в kill id процесса

Сообщение Bizdelnick » 05.02.2016 16:16

Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Аватара пользователя
nerve
Сообщения: 267
ОС: OpenBSD

Re: передать в kill id процесса

Сообщение nerve » 05.02.2016 16:16

Shell

#!/bin/sh pid=`ps ax | grep "run.sh" | awk '{print $1}'` kill "$pid"

Спасибо сказали:

Аватара пользователя
olecya
Сообщения: 32
ОС: debian, fedora (i3-wm)

Re: передать в kill id процесса

Сообщение olecya » 05.02.2016 16:17

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

pkill run.sh
Спасибо сказали:

Tankiro
Сообщения: 23

Re: передать в kill id процесса

Сообщение Tankiro » 05.02.2016 16:28

Извиняюсь за неточность!

Ситуация такая:
Процессы приложения периодически зависают и их необходимо убивать килом!

Я хочу сделать ярлык, запустив который пользователь убъет процесс, имя процесса будет прописано в ярлыке, пользователь будет тыкать только на ярлык, поэтому ситуация где вручную требуется прописать в киле id или имя процесса не подходит

pid=`ps ax | grep "run.sh" | awk '{print $1}'`
kill "$pid"


Не дал результата - при выполнении выводит в хелп команды ps
Спасибо сказали:

Аватара пользователя
olecya
Сообщения: 32
ОС: debian, fedora (i3-wm)

Re: передать в kill id процесса

Сообщение olecya » 05.02.2016 16:33

pgrep
pidof
Спасибо сказали:

Tankiro
Сообщения: 23

Re: передать в kill id процесса

Сообщение Tankiro » 05.02.2016 16:42

ptree | grep "run.sh" | awk '{print $1} - получил пиды процессов
но не получилось их убить

pid=`ptree | grep "run.sh" | awk '{print $1}'`
kill "$pid"
Спасибо сказали:

Аватара пользователя
olecya
Сообщения: 32
ОС: debian, fedora (i3-wm)

Re: передать в kill id процесса

Сообщение olecya » 05.02.2016 16:47

Вот я написала тебе нужный ярлык

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

cat script.desktop
#!/usr/bin/env xdg-open
[Desktop Entry]
Name=script
Comment=Несанкционированное убийство
GenericName=
Keywords=zombi
Exec=bash -c "pkill gnome-terminal"
Terminal=false
Type=Application
Icon=/usr/share/pixmaps/faces/dice.jpg
Categories=tools
StartupNotify=false


В данном случае я убиваю свой терминал. Замени на необходимое приложение
Спасибо сказали:

Tankiro
Сообщения: 23

Re: передать в kill id процесса

Сообщение Tankiro » 05.02.2016 16:55

olecya писал(а):
05.02.2016 16:47
Вот я написала тебе нужный ярлык

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

cat script.desktop
#!/usr/bin/env xdg-open
[Desktop Entry]
Name=script
Comment=Несанкционированное убийство
GenericName=
Keywords=zombi
Exec=bash -c "pkill gnome-terminal"
Terminal=false
Type=Application
Icon=/usr/share/pixmaps/faces/dice.jpg
Categories=tools
StartupNotify=false


В данном случае я убиваю свой терминал. Замени на необходимое приложение


Я упустил один момент!
Ярлык будет находится на Виндовой машине (XP)
Но даже если выполнить эту команду (pkill gnome-terminal"), то остановится только родительский процесс, а дочерний остается висеть, а мне необходимо, чтобы оба процесса закончили свое существование
Спасибо сказали:

Аватара пользователя
olecya
Сообщения: 32
ОС: debian, fedora (i3-wm)

Re: передать в kill id процесса

Сообщение olecya » 05.02.2016 18:16

Поэкспериментируйте с такой строчкой

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

ps -ef | grep "$(pgrep gnome-terminal)" | awk '{print $2}'

Должно выводить все дочерние процессы
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 15821
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: передать в kill id процесса

Сообщение Bizdelnick » 05.02.2016 18:50

Люди, пишущие конвейеры типа ps | grep | awk, скажите, где вы этого понабрались? Очень часто вижу, и всякий раз ужасаюсь. Результат ведь совершенно непредсказуем. Пять раз убьёте что надо, на шестой — что не надо.
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 15821
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: передать в kill id процесса

Сообщение Bizdelnick » 05.02.2016 19:00

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

#!/bin/sh
for pid in $(pgrep --uid=$(id -u) --exact run.sh); do
    pkill --parent=$pid
    kill $pid
done
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Tankiro
Сообщения: 23

Re: передать в kill id процесса

Сообщение Tankiro » 08.02.2016 15:02

Всем спасибо, мне подошел такой способ

kill -9 $(ptree | grep run.sh | awk '{print $1}')
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 15821
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: передать в kill id процесса

Сообщение Bizdelnick » 08.02.2016 15:46

Tankiro
Прочитайте, пожалуйста, то, что я написал чуть выше. Ваше решение — рулетка. Русская. Замените свой конвейер на pgrep --uid=$(id -u) --exact run.sh. Ну или хотя бы на pgrep --exact run.sh.
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

Аватара пользователя
nerve
Сообщения: 267
ОС: OpenBSD

Re: передать в kill id процесса

Сообщение nerve » 08.02.2016 17:10

Bizdelnick писал(а):
08.02.2016 15:46
pgrep --exact.

эта опция:
-x Only match processes whose name (or command line if -f is specified) exactly match the pattern.

?
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 15821
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: передать в kill id процесса

Сообщение Bizdelnick » 08.02.2016 17:21

Она самая.
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали: