所以我想做的是非常基本的......但我不知道如何去做。假设我有一个程序正在运行,但我想将 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
对于列中可能有空白值或多字值的输出来说,这不是一个好的解决方案。