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

cutawk나는 공백을 계산하지 않고 공백으로 구분된 단어를 추출하기 때문에 using 대신 사용하는 것을 선호합니다 .

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

이는 awk열에 공백 값이나 여러 단어 값이 있을 수 있는 출력에는 좋은 솔루션이 아닙니다.

관련 정보