На моем локальном сервере работают много процессов Java, и в то же время я использую Eclipse. Теперь, когда я должен перезапустить свои процессы (я запускаю процессы через сценарий оболочки), перед каждым запуском, я должен уничтожить старые процессы через:
Метод 1:- kill -9 $Pid
(для каждого процесса один за другим, который является трудоемким),
Метод 2:- killall -9 java
(для всех процессов - легкий, но Eclipse будет уничтожен слишком излишне),
В случае Метода будут также уничтожены 2 Eclipse, который я никогда не хочу. Есть ли какой-либо выход из этого? Я держал пари, что должно быть :P
Править: Я использую человечность 15.04.
Дайте попытку этой команде:
ps ax | grep "java" | egrep -v "eclipse" | cut -b1-06 | xargs -t kill
это будет искать все процессы, содержащие Java, и затмение execluding затем уничтожают их
Используя awk
ps ax | awk '/java/ && !/eclipse/ {system("kill "$1)}'
команда уничтожает весь java
процессы, но не процесс eclipse
.
Как насчет:
pgrep -af 'java' | grep -Po '^[^ ]+(?!.*eclipse)' | xargs kill
pgrep -af 'java'
поиски java
в полной командной строке процессов и перечисляют их
grep -Po '^[^ ]+(?!.*eclipse)'
взгляды среди искавших процессов и получают идентификаторы процесса процессов, которые не имеют eclipse
в их полных командных строках
xargs kill
, уничтожит процессы.
jps -m | grep -v eclipse | awk '{print $1}' | xargs -t kill
Использование jps, чтобы удостовериться, что Вы ищете просто команды Java и не все команды, которые имеют Java в их пути.
ps ax | grep "java" | egrep -v "eclipse" | cut -b1-06 | xargs -t kill