
실행 중인 프로세스의 PID 목록을 만들어야 합니다.
이게 스크립트야
ps
echo "fields are "
ps | cut -d' ' -f1
ps
전시
PID TTY TIME CMD
2168 pts/4 00:00:00 sh
2177 pts/4 00:00:00 mailx
5191 pts/4 00:00:00 sh
6494 pts/4 00:00:00 sh
6495 pts/4 00:00:00 ps
12154 pts/4 00:00:00 sh
12172 pts/4 00:00:00 mailx
15618 pts/4 00:00:00 bash
하지만 파이프를 자르는 결과는 단지
12154
12172
15618
답변1
문제는 cut
단일 공백 문자를 구분 기호로 사용하는 것이지만 열 이름과 4자리 PID가 오른쪽 정렬되므로 선행 공백이 여러 개 있어 cut
빈 줄이 출력됩니다.
awk
또 다른 방법은 이러한 입력을 더 잘 처리하는 를 사용하는 것입니다 .
ps | awk '{ print $1 }'
ps
특별한 상황에서마인드몽키의 답변더 나은 방법입니다.
답변2
전체 목록:
ps -eo pid
또는 귀하의 프로세스만:
ps -o pid
답변3
세 번째 옵션으로 다음을 사용할 수도 있습니다 grep
.
ps | grep -oP '^\s*\d+'
-P
Perl 정규식( \s
, \d
및 +
) 을 활성화 하고 일치하는 줄 중 일치하는 부분만 인쇄되도록 -o
합니다 .grep