이번시간에 굉장히 많이 사용되는 명령어들에 대해 더 알아보겠습니다.

1. cat 

2. grep

3. find

4. ps

5. grep과 find, ps의 복합적 사용

 

 

1. cat

cat명령어는 파일의 내용을 출력하는 명령어인데 '>' 와 '>>' 기호를 이용하여 파일의 내용을 다른 파일에 덮어쓰거나 이어붙일 수 있습니다. 

>>기호로 내용을 덧붙일 경우 자동으로 개행처리가 됩니다.

주의할 것은 cat file1 >> file 2일 때 file1내용 뒤에 file2내용이 덧붙여지는 게 아니라 file2 내용 뒤에 file1 내용이 덧붙여진다는 점입니다.

그리고 내용이 덮어쓰기 될 파일과 내용이 덧붙여질 파일이 없더라도 입력함과 동시에 파일이 생기고 동작이 진행됩니다.

아래 결과들을 토대로 쉽게 이해할 수 있습니다.

 

2. grep

grep 명령어는 어떤 문자열에 대해 그 문자열의 내용을 가진 파일/ 내용을 검색해 주는 명령어입니다.

단독으로 쓰기보다 주로 ps나 find 명령어와 같이 쓰입니다. 

형태는 간단합니다. grep ["검색 문자열"] ["파일명"]  

 

문자열을 검색할 파일 명과 파일 내용을 출력하려면 ["파일명"] 부분을 *로 해주면 됩니다.

.txt, .c, .py처럼 형식이 있는 파일에 대해서만 검색 문자열이 담겨있는 어떤 파일의 내용만 출력하려면 *.*를 적어주시면 됩니다.

 

주의: file1과 file1.txt는 서로 다른 파일입니다. *는 모든 파일을 검색하고 파일명/파일 내용까지 출력하고

*.*는  .txt, .c처럼 파일 형식이 있는 파일 중에서만 검색하며 파일 내용만 출력합니다.

 

grep -H ["문자열"] *.* 처럼 H인자를 추가하면 *의 결과처럼 파일명과 내용이 같이 출력됩니다.

grep -H ["문자열"] * 처럼 작성한다면 마찬가치로 파일명과 내용이 같이 출력됩니다.

grep -Hw["문자열"] * 처럼 작성한다면 정확히 검색 문자열과 동일한 문자열이 들어간 파일명/내용만 출력됩니다.

ex) grep -Hw file * => files라는 내용이 담긴 파일은 안뜨고 file이라는 내용만 들어간 파일명/내용만 출력됨

 

아래 명령어 결과들을 천천히 보고 어떻게 다른건지 확인해 보시면 될 것 같습니다.

파일 명과 파일 내용까지 둘다 검색을 필요로 하는경우가 많으니 그냥 *를 붙이는 게 나아보입니다.

3. find 

find 명령어는 어떤 파일이나 디렉토리의 위치를 알려주는 명령어입니다.

주로 많이 사용되는 꼴은 find ./ -name ["파일명or디렉토리명"]꼴입니다.

./는 현재 디렉토리를 의미하고 현재 위치를 기준으로 검색 파일/디렉토리의 위치를 출력합니다.

* 자꾸 불필요한 권한 거부 문구가 뜨는데 저랑 똑같은 증상이라면 무시하거나  앞에 sudo를 붙이면 됩니다.

 

4. ps

ps는 현재 실행중인 프로세스의 목록을 나열하여 출력하는 명령어입니다.

기본적으로 위와 같이 나오고 다른 프로그램을 실행중이라면 저기에 추가로 나열됩니다.

사진에 나오는 PID를 이용하여 해당 프로세스를 종료시킬 수 있습니다.

kill -9 "PID번호"

ex) PID가 12345인 apache 프로세스를 종료시킬 때=> kill -9 12345

 

하지만 ps명령어를 단독으로 사용하진 않고 ps -ef를 많이사용합니다. 

위에서는 2개만 나왔는데 아래를 보면 굉장히 많은 프로세스가 돌고 있는것을 알 수 있습니다.

PID는 프로세스의 id, PPID는 해당 프로세스의 부모 프로세스를 의미합니다.

 

 

5. grep, find, ps의 복합적 사용 예시

grep과 find, ps명령어는 단독으로는 많이 안쓰이고 이 3가지 명령어들과 주로 조합하여 사용됩니다.

명령어는 모두 다루었고 조합하여 사용될 뿐이므로 간단하게 몇가지 예제를 통해 의미를 알아보셨으면 좋겠습니다.

 

1) 검색할 문자열과 관련된 프로세스의 목록 찾기

딱히 출력될만한 작업을 하지 않아서 저번에 깔아놓은 apache를 검색해보겠습니다.

ps -ef | grep apahe (apache라는 문자열과 관련된 프로세스 )

아파치 웹서버 프로세스가 돌아가고 있음을 의미합니다. 아파치 프로세스를 kill 하면 아파치 웹서버가 다운될 것입니다.

 

2) 확인하고자 하는 글자가 포함된 파일 찾기

sudo find ./ -name "*" | xargs grep -n "file1"을 입력하니 

file1문자열이 포함된 파일명/내용과 문자열 "file1"과 관련된 몇가지 명령어 히스토리 기록도 보여주는 것 같습니다.

 

 

 

 

+ Recent posts