如何使用 xargs 获取运行进程的运行时间

Abt*_*Pst 1 linux command-line xargs

我想获取某些进程的运行时间。这就是我正在做的事情

ps -ef | grep "python3 myTask.py" | awk '{print $2}' | xargs -n1 ps -p {} -o etime
Run Code Online (Sandbox Code Playgroud)

我想通过以下方式获取pid

ps -ef | grep "python3 myTask.py" | awk '{print $2}'
Run Code Online (Sandbox Code Playgroud)

然后将这些传递给

ps -p {} -o etime
Run Code Online (Sandbox Code Playgroud)

通过使用 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).
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

小智 5

您可以使用以下命令:

pgrep -f "python3 myTask.py" | xargs -i{} ps -p {} -o etime
Run Code Online (Sandbox Code Playgroud)

pgrep- 根据名称和其他属性查找或发出信号处理。

-f, --full- 该模式通常仅与进程名称匹配。设置 -f 时,将使用完整命令行。

如需进一步阅读,请参阅man pgrep


该段中缺少的部分xargs-i{},它为每个参数调用命令,而 {} 将被它替换。

-i[replace-str], --replace[=replace-str]- 如果指定了replace-str,则此选项是-Ireplace-str 的同义词。

如需进一步阅读,请参阅man xargs