У меня есть команда ps aux | grep -v 'grep' | grep "java" | awk '{print $2}'
, которая может фильтровать все процессы Java, но проблема в том, что я хочу выбрать только те процессы, чье имя содержит core
или nimbus
. Существуют и другие процессы Java, такие как eclipse и mail server, которые работают одновременно, и я не хочу, чтобы они там были.
Я проверил это из Процессы Kill Java .
Я новичок в написании сценариев, поэтому прошу прощения, если вопрос глупый. Спасибо!
pkill -f 'java.*(core|nimbus)'
У меня нет установки Java как Ваша, но я действительно выполняю загрузку приложений Django на моем сервере. Аналогичная ситуация в этом они все похожи на процессы UWSGI. Вот блок ps aux | grep uwsgi
:
oli 7201 0.0 1.0 70324 20936 ? S 12:54 0:00 /web/venv/bin/uwsgi --include /web/django-uwsgi.ini --ini /web/asvsforms/uwsgi.ini
oli 7202 0.0 1.0 70336 20956 ? S 12:54 0:00 /web/venv/bin/uwsgi --include /web/django-uwsgi.ini --ini /web/bnc/uwsgi.ini
oli 7203 0.0 1.0 70456 21016 ? S 12:54 0:00 /web/venv/bin/uwsgi --include /web/django-uwsgi.ini --ini /web/cleanup/uwsgi.ini
oli 7204 0.0 1.0 70272 21068 ? S 12:54 0:00 /web/venv/bin/uwsgi --include /web/django-uwsgi.ini --ini /web/emwill/uwsgi.ini
oli 7205 0.0 1.3 88336 28124 ? S 12:54 0:00 /web/venv/bin/uwsgi --include /web/django-uwsgi.ini --ini /web/qi/uwsgi.ini
oli 7206 0.0 1.0 70256 20996 ? S 12:54 0:00 /web/venv/bin/uwsgi --include /web/django-uwsgi.ini --ini /web/sbaccuracy/uwsgi.ini
Вы можете awk
это вниз (Вам не нужно grep
и awk
) но jave взгляд на pgrep
!
$ pgrep -af 'uwsgi.*cleanup'
7203 /web/venv/bin/uwsgi --include /web/django-uwsgi.ini --ini /web/cleanup/uwsgi.ini
7217 /web/venv/bin/uwsgi --include /web/django-uwsgi.ini --ini /web/cleanup/uwsgi.ini
Это -f
который действительно требуется здесь. Это расширяется, поиск шаблона к целой командной строке раньше выполнял что-то. Без него он только искал бы первую часть. -a
должен просто здесь произвести сплошную линию.
Так или иначе, для уничтожения этого мы просто переключаемся на pkill
который является практически той же командой. Это не имеет тех же выходных функций, но это не то, для чего это разработано. И это приводит нас обратно к верхней части ответа.
Если Вы собираетесь настоять на фильтрации ps
, не используйте ps|grep|grep|awk|egrep|awk|xargs kill
или независимо от того, что было теперь предложено. Это просто выглядит глупым. Сингл awk
может сделать всю фильтрацию.
ps aux | awk '/java.*(core|nimbus)/ {print $2}'
Кроме того, можно отправить список для уничтожения от непосредственно в awk
:
ps aux | awk '/java.*(core|nimbus)/ {print $2 | kill}'
Я все еще выбрал бы pgrep
и pkill
все же.
Почти там. Чтобы выбрать процессы, вы можете сделать это:
ps aux | grep -v 'grep' | grep "java" |egrep -E "core|nimbus"
И когда это даст нужные вам процессы, вы можете приступить к их уничтожению за один раз:
ps aux | grep -v 'grep' | grep "java" | egrep -E "core|nimbus" | awk '{print $2}' |xargs -n 1 kill
Почти там! Попробуйте это: ps aux | grep -v 'grep' | grep "java" | awk '/core/ || /nimbus/ {print $2;}'
можно затем уничтожить процессы, делающие что-то как отправленный @Maarten, ниже, или это:
kill -9 `ps aux | grep -v 'grep' | grep "java" | awk '/core/ || /nimbus/ {print $2;}'`
gnome-terminal
имеет " держите window" опция. Пойдите для Редактирования-> Предпочтения Профиля-> Заголовок и Команда-> Когда команда выходит из-> набор к " Держите терминал open". – wjandrea 22 December 2016 в 18:09