将 PS 输出管道传输到文本文件中

将 PS 输出管道传输到文本文件中

所以我想做的是非常基本的......但我不知道如何去做。假设我有一个程序正在运行,但我想将 ps -C "ProgramXX" 的输出通过管道传输到文件中。

正常运行 ps -C "ProgramXX" 会产生以下效果:

PID TTY TIME            CMD
123 ?   00:00:00    Program1
142 ?   00:00:00    Program1
165 ?   00:00:00    Program1
221 ?   00:00:00    Program1

他们是否有任何“简单”的方法将第一列和第四列(忽略顶部标题行)放入文本文件中。

我想你可以运行 ps -C "Program1" >> Data.txt .....然后运行一个脚本来删除脂肪?顺便说一句,这将在 Bash 中完成。也许使用 grep 或其他东西......但我真的不知道。顺便说一句,这将运行多次......因此 data.txt 将继续增长。

答案1

您可以通过 控制获取输出的列ps。请注意,不同版本的 Linux/Unix 的确切命令行确实有所不同,但我相信以下命令可以满足您的需求。

ps --no-headers -o pid,comm  -C "ProgramXX" >> Data.txt

的手册页ps(1)将列出您可用的所有选项。

答案2

ps是一把功能性瑞士军刀。你要这个

ps -C "ProgramXX" -o pid=,comm=

-o控制输出列,尾随=表示您不需要标题。

如果你这样写:

ps -o comm= -o pid= | grep '^ProgramXX'

那么它应该适用于大多数ps实现。不幸的是,-C是GNUism。

答案3

pgrep -l Program1会给出你想要的输出。

答案4

cut我喜欢使用而不是使用,awk因为它可以提取以空格分隔的单词,而无需计算空格:

ps -C "Program 1" | awk '{print $1,$4}'

请注意,awk对于列中可能有空白值或多字值的输出来说,这不是一个好的解决方案。

相关内容