grep은 특정 패턴이 포함된 문자열이나 줄을 검색할 때 사용하는 리눅스 명령어다. 로그 검색, 설정 파일 분석 등에서 자주 사용된다. 따라서 다른 명령어와 조합해서 사용하는 경우가 많다.
ls -la | grep media
파이프라인 앞 명령어(ls -la
)의 출력값 중에서 media
가 들어간 문장만 출력한다.
sudo apt list --installed | grep python
파이프라인 앞 명령어(sudo apt list --installed
)의 출력값 중에서 python
이 들어간 문장만 출력한다.
ps aux
모든 프로세스를 조회한다.
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
_windowserver 171 29.7 0.8 421158688 137104 ?? Ss 4 725 1862:18.37 /System/path/WindowServer -daemon
결과 출력은 위 예시와 같다.
USER
: 프로세스를 실행한 사용자PID
: 프로세스를 식별하기 위한 ID%CPU
: CPU 사용률%MEM
: 메모리 사용률COMMAND
: 프로세스를 실행할 때 사용한 명령어ps aux | grep keyword
keyword
를 포함하는 프로세스만 조회한다.
kill pid
pid
에 해당하는 프로세스 id를 가진 프로세스를 종료한다.
nohup program-start-order &
program-start-order
부분에 원하는 프로그램의 실행 명령어를 입력하면 백그라운드에서 프로그램이 실행된다.
터미널에서 스프링 프로젝트를 하나 실행시켜보자.
java -jar my-spring-application.jar
위 명령어대로 애플리케이션을 실행시키면 프로세스는 포그라운드에서 동작하게 된다. 따라서 다른 프로그램을 조작할 수 없다. 스프링 로그만을 계속 보고있어야한다. 스프링 애플리케이션을 실행하면서 다른 프로세스도 조작하고 싶다면 백그라운드에서 애플리케이션을 실행시켜야 한다. 이때 필요한 명령어가 nohup &
이다.
nohup java -jar my-spring-application.jar &
앞뒤로 명령어가 추가됐다. 이렇게 실행하면 이제 스프링 애플리케이션은 백그라운드에서 동작하게 된다.
nohup &
명령어로 프로그램을 실행하면 백그라운드 프로세스가 생성되기 때문에 로그를 확인할 수 없다. 그런데 명령어를 실행하면 곧바로 추가 콘솔이 출력된다.
nohup: ignoring input and appending output to 'nohup.out'
이는 nohup &
명령어로 실행한 프로그램의 로그가 nohup.out
이라는 파일에 저장됨을 의미한다.
cat nohup.out
명령어로 로그를 확인할 수 있다.
nohup java -jar my-spring-application.jar >> my-log-file.log 2>&1 &
위 명령어를 참고하자.
sudo lsof -i:port-number
port-number
에 해당하는 프로세스의 정보를 출력한다. 이때 sudo
명령어를 추가하는게 좋다. 만일 추가하지 않는다면 특정 포트만을 대상으로 검색이 진행된다. 따라서 포트는 이미 점유 중이지만 검색 결과는 나타나지 않을 수 있다.
sudo lsof -i:443
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
Notion 20642 regularkim 19u IPv4 0x0001234567891011 0t0 TCP https (ESTABLISHED)
조회시 위와 같은 결과가 출력된다.
COMMAND
: 프로세스를 실행시킬 때 사용된 명령어의 일부만 보여준다.PID
: 프로세스를 식별하기 위한 ID리눅스에는 포스트맨과 같은 역할을 하는 curl
이라는 명령어가 있다. 이 명령어를 사용하여 GET
, POST
, PUT
, DELETE
등 다양한 형태로 요청을 보낼 수 있다.
curl localhost:8080/api/test
GET
요청에서만 사용하고 다른 요청 테스트를 해야한다면 포스트맨 같은 다른 도구를 사용하자.
curl ifconfig.me
위 명령어는 사실 ifconfig.me
라는 주소로 GET
요청을 보내는 명령어이다. 그리고 ifconfig.me
사이트는 내 컴퓨터의 IP 주소를 알려주는 사이트이다. 브라우저에서 ifconfig.me
주소로 접근하면 똑같은 정보를 더 자세히 보여준다.
ip a
위 명령어를 입력하면 2개의 결과가 나온다. 이 중 2번째 결과의 inet
값이 private IP 주소이다. 인터넷을 유선과 무선으로 동시에 연결했다면 시스템 설정에서 확인해보아야 한다.
윈도우나 맥에서는 작업 관리자 창에서 프로세스의 하드웨어 점유율을 확인할 수 있다. 이와 같이 리눅스에서도 같은 기능을 실행하는 명령어가 있다.
top
위 명령어를 입력하면 실행 중인 프로세스들이 CPU 점유율을 기준으로 정렬되어 출력된다. 해당 명령을 종료하고 싶다면 ctr + c
를 입력하자.
내가 실행시킨 프로그램의 내용이 화면에서 실행되고 출력되는 상태를 의미한다. 그러다보니 포그라운드 상태에서는 다른 프로그램을 조작할 수 없다.
내가 실행시킨 프로그램이 컴퓨터 내부적으로 실행되는 상태를 의미한다. 그래서 프로그램이 어떻게 실행되고 있는 지에 대한 정보를 화면에서 확인할 수 없다. 이런 특성 때문에 다른 명령어를 추가로 입력할 수도 있고, 새로운 프로그램을 조작할 수도 있다.
한 컴퓨터 내에서 실행되고 있는 특정 프로그램의 주소를 의미한다. 하나의 컴퓨터는 총 65536개의 포트 번호를 가지고 있다.
하나의 포트에는 하나의 프로세스만 할당할 수 있다. 예를 들어 8080포트에 스프링 서버가 실행 중이라면 다른 프로그램을 8080 포트에 할당할 수 없다.
네트워크 상에서 특정 컴퓨터를 가리키는 주소를 의미한다.
외부 인터넷을 통해 접근할 수 있는 IP
같은 네트워크 안에서만 접근할 수 있는 IP