Grep PID симулятора и убить его с помощью kubectl - PullRequest
0 голосов
/ 01 марта 2020

Мне нужна помощь с командой, в которой я пытаюсь получить GID PID симулятора ecm и убить его с помощью kubectl:

kubectl exec eric-service-0 -n cicd --kubeconfig /root/admin.conf -- bash -c "ps -ef | grep ecm | grep node | awk '{print $2}' "

Вывод вышеуказанной команды:

root      9857     0  0 07:11 ?        00:00:00 bash -c /tmp/simulator/node-v8.11.3-linux-x64/bin/node /tmp/simulator/ecm_mod.js> /tmp/simulatorEcmResponse.txt
root      9863  9857  0 07:11 ?        00:00:00 /tmp/simulator/node-v8.11.3-linux-x64/bin/node /tmp/simulator/ecm_mod.js

Ожидаемый результат :

9857 
9863

Далее мне нужно убить PID:

kubectl exec eric-service-0 -n cicd --kubeconfig /root/admin.conf -- bash -c "ps -ef | grep ecm | grep node | awk '{print $2}' | xargs kill -9"

Когда я выполняю то же самое в модуле службы, он работает, но он вызывает проблемы, когда я делаю это через kubectl извне.

Может ли кто-нибудь сообщить мне, что я здесь не так делаю?

ПРИМЕЧАНИЕ: есть 2 PID, которые необходимо убить из вывода ниже:

eric-service-0:/ # ps -ef | grep ecm | grep node
root      9857     0  0 07:11 ?        00:00:00 bash -c /tmp/simulator/node-v8.11.3-linux-x64/bin/node /tmp/simulator/ecm_mod.js> /tmp/simulatorEcmResponse.txt
root      9863  9857  0 07:11 ?        00:00:00 /tmp/simulator/node-v8.11.3-linux-x64/bin/node /tmp/simulator/ecm_mod.js

РЕДАКТИРОВАТЬ:

Вывод команды в соответствии с запросом @Cyrus ниже:

enter image description here

1 Ответ

1 голос
/ 05 марта 2020

Опубликуйте это как ответ сообщества вики для лучшей наглядности. Решение было предоставлено в комментариях @ Cyrus.

Короче говоря, OP хотел убить / прервать некоторый процесс, используя их PID's. ОП хотел сделать это с уровня кластера на указанном c модуле / контейнере, который включал ecm simulator.

. Для этого использовались следующие команды:

  • exec - выполнить команду в контейнере
  • -- bash - запустить bash внутри контейнера
  • ps -ef - вывести список всех процессов в системе
  • grep - параметры поиска c шаблон
  • awk - язык сканирования и обработки шаблонов.
  • xargs - сборка и выполнение командных строк из стандартного ввода
  • kill - отправить сигнал процессу

В MANUAL вы можете найти некоторую информацию о ps флажках:

To see every process on the system using standard syntax:
          ps -e
          ps -ef
          ps -eF
          ps -ely

, однако каждый флаг все равно даст другой вывод, как показано ниже:

-e
 PID TTY  TIME CMD

-ef
UID  PID  PPID  C STIME TTY  TIME CMD

Сайрусу рекомендуется использовать следующую команду:

kubectl exec eric-service-0 -n cicd --kubeconfig /root/admin.conf -- bash -c "pgrep -f 'node.*ecm'"

bash -c - Если присутствует опция - c, то команды читать из первого неопционального аргумента command_string.

Также объяснить в комментарии:

pgrep просматривает cu постоянно запущенные процессы и перечисляет идентификаторы процессов, которые соответствуют критериям выбора для stdout. От человека пгреп. узел. * ecm это регулярное выражение .

...