본문 바로가기

운영체제/리눅스, 유닉스

[리눅스] 파이프라인(|)을 알아보자(ps -ef | grep ~ 명령어 이용 등)

유닉스, 리눅스에서 가장 많이 사용하는 명령어 중 하나인 파이브라인

기호는 원화키키 위의(쉬프트+) '|' 이다.

(매킨토시의 경우 원화키() 대신 백슬래시(\))

폰트에 따라 약간씩 다르게 표현된다.

 

간단한 기능의 명령어지만 서버관리자들이 많이 쓰는

유닉스, 리눅스에 있어 없어서는 안될 명령어이다.

 

 

 

기능설명

파이프라인은 파이프라인 앞 명령어의 출력값을 파이프라인 뒤 명령어의 입력값으로 사용할 수 있게 해준다.

위의 예시에서는 명령어1의 출력값을 명령어2의 입력값으로 쓰며

그에 따라 나온 명령어2의 출력값을 명령어3의 입력값으로 쓰고

최종 명령어3의 출력값을 돌려준다.

 

한번에 여러번의 파이프라인을 넣을 수도 있어 복합적인 명령어를 넣어 편리하게 서버를 관리할 수 있게 해준다.

가장 자주 사용하는 것이 ps -ef | grep (찾을 단어)이다.

 

가장 많이 사용하는 명령어 조합을 이용해 예시를 한번 살펴보자

 

 

사용예시
[root@localhost ~]# ps -ef | grep apache

가장 많이 사용하는 'ps -ef | grep 단어' 명령어이다.

주로 apache, oracle, httpd, 회사에서 사용하는 시스템 모듈명 등을 검색하여 프로세스가 정상 실행중인지 점검한다.

 

 

ps -ef 명령어를 치면 모든 프로세스를 보여줘 보기가 어렵기 때문에

ps -ef의 결과를 파이프라인을 이용해 grep 명령어의 입력값으로 넣어주어 찾고자 하는 프로세스를 쉽게 찾을 수 있다.

 

 

 

한번 실제 서버에서 ps -ef를 입력했을때와 ps -ef | grep 을 실행했을때를 비교해보자

 

ps -ef만 치면 모든 실행중인 프로세스를 보여주기 때문에 매우 많아 보기가 어렵다

한 페이지로도 다 표시되지 않는다.

그래서 오늘 알아본 파이프라인을 이용해서 ps -ef명령어를 grep으로 던져줘서 apache를 검색하면

(ps -ef | grep apache를 치면)

apache가 포함된 프로세스를 확인할 수 있다.

apache가 포함된 프로세스 2개가 검색되었음

 

여기서 주의해야될 점이 ps -ef는 각 행을 한줄로 표시하기 위해 커맨드창 화면 길이에 따라 길이 제한을 두는데

ps -ef | grep ~ 명령어도 마찬가지로 보기어렵다고 길이를 제한하면 결과가 다르게 나올 수 있다.

--columns를 이용해 길이를 제한하면 프로세스가 1개만 검색됨

이는 ps와 grep이 별개의 명령어기 때문에 ps -ef --columns=50으로 나오는 결과값만 가지고 apache를 찾으므로 뒤가 잘렸다면 grep으로 찾을 수 없다.

거꾸로 생각하면 ps -ef의 경우에는 화면상에는 잘라서 표기하지만 실제는 잘리지 않은 모든 값을 가진다고 볼 수 있다.

 

 

 

이외에도 특정 명령어가 너무 길어 보기 어려울때 more를 이용하여 보여준다던가 등 여러 명령어 조합을 이용 할 수 있다.

[root@localhost ~]# ps -ef --columns=1000 | more
[root@localhost ~]# ls -al | more
[root@localhost ~]# ls -al | grep ~

 

 

(참고)

ps -ef : 현재 실행중인 프로세스 목록을 보여주는 명령어

grep : 특정 문자열이 포함된 열을 보여주는 명령어

 

각 명령어의 상세한 내용은 이전글에서 포스팅 했으니 참고 바람

ps 명령어 이전 포스팅     ▶ https://arer.tistory.com/150

grep 명령어 이전 포스팅  ▶ https://arer.tistory.com/151

more 명령어 이전 포스팅 ▶ https://arer.tistory.com/149