Как использовать xargs для получения прошедшего времени для запущенных процессов

Я хочу получить время выполнения некоторых процессов. Вот что я делаю

ps -ef | grep "python3 myTask.py" | awk '{print $2}' | xargs -n1 ps -p {} -o etime

Я хочу получить pids от

ps -ef | grep "python3 myTask.py" | awk '{print $2}'

затем передайте их

ps -p {} -o etime

с помощью xargs, но это не работает. я получил

error: process ID list syntax error

Usage:
 ps [options]

 Try 'ps --help <simple|list|output|threads|misc|all>'
  or 'ps --help <s|l|o|t|m|a>'
 for additional help text.

For more details see ps(1).
error: process ID list syntax error

Usage:
 ps [options]

 Try 'ps --help <simple|list|output|threads|misc|all>'
  or 'ps --help <s|l|o|t|m|a>'
 for additional help text.

For more details see ps(1).

Что я делаю не так?

Почему бы вам не добавить столбец для вашего первого вызова ps, а затем grep/awk вашего процесса (можно объединить в один вызов awk)?

knittl 11.01.2023 23:52

Но тем не менее, вы должны указать -I{}; в противном случае вы не можете использовать заполнитель

knittl 11.01.2023 23:54
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
2
66
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы должны указать -I{} для xargs, чтобы установить заполнитель; в противном случае его нельзя использовать.

Тем не менее, ваша команда слишком сложна и включает в себя слишком много промежуточных шагов (и условия гонки). Просто получите свои процессы, включая прошедшее время, и отфильтруйте нужные строки:

ps -eo etime,cmd | awk '/python3 myTask.py/{print $1}'

(больше нет xargs)

Ответ принят как подходящий

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

pgrep -f "python3 myTask.py" | xargs -i{} ps -p {} -o etime

pgrep - Поиск или сигнализация процессов на основе имени и других атрибутов.

-f, --full - Шаблон обычно сопоставляется только с именем процесса. При установке -f отображается полная командная строка. использовал.

Для дальнейшего чтения см. man pgrep.


Отсутствующей частью сегмента xargs была -i{}, которая вызывает команду для каждого аргумента, а {} будет заменена ею.

-i[replace-str], --replace[=replace-str] - Этот параметр является синонимом параметра -Ireplace-str, если указан параметр replace-str.

Для дальнейшего чтения см. man xargs.

Другие вопросы по теме