리눅스 기본 명령어 - 2

Regular Kim·2025년 7월 29일
0

기타

목록 보기
10/19

특정 키워드 검색하기

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, &)

nohup program-start-order &

program-start-order 부분에 원하는 프로그램의 실행 명령어를 입력하면 백그라운드에서 프로그램이 실행된다.

예시. 스프링 프로젝트 백그라운드로 실행하기

터미널에서 스프링 프로젝트를 하나 실행시켜보자.

java -jar my-spring-application.jar

위 명령어대로 애플리케이션을 실행시키면 프로세스는 포그라운드에서 동작하게 된다. 따라서 다른 프로그램을 조작할 수 없다. 스프링 로그만을 계속 보고있어야한다. 스프링 애플리케이션을 실행하면서 다른 프로세스도 조작하고 싶다면 백그라운드에서 애플리케이션을 실행시켜야 한다. 이때 필요한 명령어가 nohup &이다.

nohup java -jar my-spring-application.jar &

앞뒤로 명령어가 추가됐다. 이렇게 실행하면 이제 스프링 애플리케이션은 백그라운드에서 동작하게 된다.

백그라운드 프로세스 로그 확인하기 (nohup)

nohup & 명령어로 프로그램을 실행하면 백그라운드 프로세스가 생성되기 때문에 로그를 확인할 수 없다. 그런데 명령어를 실행하면 곧바로 추가 콘솔이 출력된다.

nohup: ignoring input and appending output to 'nohup.out'

이는 nohup & 명령어로 실행한 프로그램의 로그가 nohup.out이라는 파일에 저장됨을 의미한다.

cat nohup.out

명령어로 로그를 확인할 수 있다.

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 요청에서만 사용하고 다른 요청 테스트를 해야한다면 포스트맨 같은 다른 도구를 사용하자.

내 public IP 주소 알아보기

curl ifconfig.me

위 명령어는 사실 ifconfig.me라는 주소로 GET 요청을 보내는 명령어이다. 그리고 ifconfig.me 사이트는 내 컴퓨터의 IP 주소를 알려주는 사이트이다. 브라우저에서 ifconfig.me 주소로 접근하면 똑같은 정보를 더 자세히 보여준다.

내 private IP 주소 알아보기

ip a

위 명령어를 입력하면 2개의 결과가 나온다. 이 중 2번째 결과의 inet 값이 private IP 주소이다. 인터넷을 유선과 무선으로 동시에 연결했다면 시스템 설정에서 확인해보아야 한다.

CPU, Memory 체크하기

윈도우나 맥에서는 작업 관리자 창에서 프로세스의 하드웨어 점유율을 확인할 수 있다. 이와 같이 리눅스에서도 같은 기능을 실행하는 명령어가 있다.

top

위 명령어를 입력하면 실행 중인 프로세스들이 CPU 점유율을 기준으로 정렬되어 출력된다. 해당 명령을 종료하고 싶다면 ctr + c 를 입력하자.

Q&A

포그라운드?

내가 실행시킨 프로그램의 내용이 화면에서 실행되고 출력되는 상태를 의미한다. 그러다보니 포그라운드 상태에서는 다른 프로그램을 조작할 수 없다.

백그라운드?

내가 실행시킨 프로그램이 컴퓨터 내부적으로 실행되는 상태를 의미한다. 그래서 프로그램이 어떻게 실행되고 있는 지에 대한 정보를 화면에서 확인할 수 없다. 이런 특성 때문에 다른 명령어를 추가로 입력할 수도 있고, 새로운 프로그램을 조작할 수도 있다.

포트?

한 컴퓨터 내에서 실행되고 있는 특정 프로그램의 주소를 의미한다. 하나의 컴퓨터는 총 65536개의 포트 번호를 가지고 있다.

하나의 포트에는 하나의 프로세스만 할당할 수 있다. 예를 들어 8080포트에 스프링 서버가 실행 중이라면 다른 프로그램을 8080 포트에 할당할 수 없다.

IP?

네트워크 상에서 특정 컴퓨터를 가리키는 주소를 의미한다.

public IP?

외부 인터넷을 통해 접근할 수 있는 IP

private IP?

같은 네트워크 안에서만 접근할 수 있는 IP

profile
What doesn't kill you, makes you stronger

0개의 댓글