-1

У меня 3 экземпляра solr работает

  1. используя tomcat (в оболочке вы найдете что-то вроде -Dcatalina.base =/usr/local/apache-tomcat-6.0.35 -)
  2. подать в суд на tomcat_1 (в оболочке вы найдете что-то вроде -Dcatalina.base =/usr/local/apache-tomcat-6.0.35_1 -)
  3. используя tomcat_2 (в оболочке вы найдете что-то вроде -Dcatalina.base =/usr/local/apache-tomcat-6.0.35_2 -)

Могу ли я написать сценарий оболочки, который может убить конкретный экземпляр

  1. за 1: убить кота, но не кота_1 и кота_2
  2. для 2: убить tomcat_1, но не tomcat & tomcat_2
  3. за 3: убить tomcat_2, но не tomcat & tomcat_1

1 ответ1

2

Когда я написал этот ответ четыре года назад, я все еще был новичком в Linux и в оболочке - и оригинальный ответ со всеми его ненужными grep и sed делает это до боли очевидным…
Конечно, есть гораздо более простое решение:

pkill -f 'tomcat-6.0.35 '

отправит SIGTERM всем процессам, чья полная командная строка (= имя исполняемого файла + параметры, с которыми он был запущен - следовательно, -f) содержит строку 'tomcat-6.0.35'. Обязательно включите завершающий пробел, чтобы избежать совпадения с 'tomcat-6.0.35_1' и т.д.

Вы также можете использовать pgrep вместо pkill для перечисления идентификаторов процессов, вместо того, чтобы напрямую их обрабатывать.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .