Как получить PID моего главного процесса (а не один из его работников)?

Можно выполнить с помощью awk:

awk '
# define a long block
BEGIN{
  long = 10;
}
# output long block when new block is found
($1 == "query" && n >= long){
  print s;
}
# new block
($1 == "query"){
  s = "";
  n = 0;
}
# all lines
{
  s = (s != "") ? s "\n" $0 : $0;
  n++;
}
# output the long block if it is the last one in the file
END{
  if (n >= long){
    print s;
  }
}
' input.file > output.file
3
10.05.2018, 00:40
2 ответа

Используйтеpgrepвместо фильтрации вывода из ps. Я думаю, что в вашем случае pgrep -f '^([^ ]*/)?puma 'будет соответствовать правильному процессу, но немного поэкспериментируйте, чтобы убедиться, что вы получаете то, что хотите, и не более того.

Как только вы убедитесь, что pgrepнаходит процесс, который вы хотите убить, замените pgrepна pkill.

5
27.01.2020, 21:18

Вы можете сделать это с помощью команды ps следующим образом:

ps -ef | grep puma | grep -v grep | grep -v cluster | awk '{print $2}' | xargs kill

Объяснение:
ps:дает информацию о процессе
grep:фильтрует предоставленную строку
grep -v:удаляет запись с совпадающими записями
awk '{print $2}':возвращает второй элемент строки
xargs:преобразует введенные данные в аргументы для следующей за ними команды

0
27.01.2020, 21:18

Теги

Похожие вопросы