Всем доброго времени суток.
Я играюсь c Java сервером Lineage и когда мне нужно его закрыть, то нужно лезть в ps aux и отлавливать нужный PID потом kill -15 PID PID PID PID где есть два *.sh скрипта, которые лупят (loop) логин и гейм сервер.
Подскажите как создать такой скрипт который будет отлавливать сам нужный PID и будет его закрывать. Или, хотяб присваивал нужный PId нужным процессам, хотя с лупом такое вряд ли пройдет.
Спасибо.
pidof должен помочь. или pgrep.
killall process_name точно не подходит? Или просто неизвестен был? :-)
Сталкивался с тем что killall не всегда убивает процесс. Правда на пожилых ядрах (openwrt с ядром 3.3.8 на роутере) Пришлось сделать такую конструкцию:
kill -KILL `pidof process_name`
Сильно глубоко не вникал, но это работает без вопросов
аха аха аха, теперь открываем man killall (наконец то) и там читаем, что и килл, и киллалл имеют одинаковые ключи. :-) то есть ему точно также можно скормить хоть "-15", хоть "-9", хоть
"killall sends a signal to all processes running any of the specified commands. If no signal name is specified, SIGTERM is sent."
ман рулит! :-)
Дык это ман надо открыть ... :) Про ключи в killall как-то не думал... :) Чем дольше живешь, тем отчетливее понимаешь что нихрена не знаешь :)
Я пробовал разные варианты : killall java - комп после этого выключается только вытягиванием сети.
kill -15 нормально работает, но нужно искать PID
kill -9 работает, но оставляет закрытые порты + нужно искать PID.
Я хочу выключить нужные процессы без поиска PID. Как автоматизировать поиск PID без моего участия?
Кстати, если вводить PID взятый из ps aux|grep java то не выключается даже через -15
Попробуйте
killall -KILL java
Спасибо, помогло))
Подскажите пожалуйста как выключить только этот процесс а не всю джаву?
java -Xmx128m -cp ./../libs/*:l2jserver.jar net.sf.l2j.loginserver.L2LoginServer
Посмотрите какой пид возвращает
pidof java
если тот что нужно - тогда
kill -KILL `pidof java`
если не работает - попробуйте вместо java вписать полную строку вызова процесса, которая выводится по ps
Нужно все-равно искать нужный PID вручную... (
Спасибо за Ваше время.
Да фигня... Не может такого быть. Все можно автоматизировать.
Скиньте сюда вывод ps -eaf и выделите процесс(ы), какой(какие) надо убить.
Только под кат!
В данном примере если сделать ручками
kill -KILL 12073
kill -KILL 12124
получается нужный эффект? Или надо грохнуть только какой-то один?
та получается. Но это нужно искать PID своими глазами) Я пользуюсь Вашим советом killall -KILL java, но бывает запущен еклипс (пытаюсь изучить яву) - его такое тоже вырубает:/
Все можно сделать.
Во первых - для поиска всех пидов процессов "java" используем pgrep (как сразу указал уважаемый itrch)
то есть
pgrep java -fl
выведет весь список процессов с именем "java",притом с полными строками запуска.
теперь если в конструкцию добавить фильтр нужного процесса, например так:
pgrep java -fl | grep Xmx128m
У Вас останется одна строка с нужным Вам процессом.
Как из этой строки выделить пид для скармливания kill - домашнее задание.
Подсказка "bash работа со строками" :)
спасибо буду искать)
Не забудьте сообщить о результатах. Чтоб мы за Вас порадовались. :)
Текст рабочего скрипта тоже бы не помешал.
а если эту строку в скрипт. запускать скрипт и искать по имени скрипта?
исправил ошибку в программе, которая могла привести к удалению лишнего, если был неправильно настроен конфиг.
Отправить комментарий