
그래서 제가 하고 싶은 일은 아주 기본적인 것인데... 어떻게 해야 할지 모르겠어요. 실행 중인 프로그램이 있지만 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
나는 공백을 계산하지 않고 공백으로 구분된 단어를 추출하기 때문에 using 대신 사용하는 것을 선호합니다 .
ps -C "Program 1" | awk '{print $1,$4}'
이는 awk
열에 공백 값이나 여러 단어 값이 있을 수 있는 출력에는 좋은 솔루션이 아닙니다.