[AWS] 2. Linux 명령어

김주희's avatar
Jun 16, 2025
[AWS] 2. Linux 명령어
💡
참고자료 ) 클라우드 서비스 개발자를 위한 AWS로 구현하는 CI/CD 배포 입문

clear

터미널 화면을 비우는 명령어
 

pwd

현재 위치를 알려주는 명령어
디폴트 위치는 /home/사용자명 이다.
notion image
 

cd

  1. cd /
최상위 경로/h인 /로 이동
notion image
 
~ = 자기 홈 폴더 있으면
notion image
 
  1. cd ..
    notion image
     
    1. cd 경로
    notion image
     

    ls

    현재 폴더에 있는 모든 폴더와 파일을 보여주는 명령어
    notion image
     

    —help

    명령어의 옵션과 사용법을 알려주는 옵션
    • -약어
    • —풀네임
    notion image
    notion image
    notion image
     
    d붙어있으면 디렉토리
    l붙어있으면 바로가기 파일 (soft link)
     
    1. ls -l
      1. 상세 정보 보기
    notion image
     
    1. ls -a
      1. 숨김 파일도 표시
    notion image
     
    notion image
     

    vi

    파일을 텍스트 에디터로 여는 명령어
    notion image
    notion image
     

    cat

    파일 안에 있는 내용 화면에 출력하는 명령어 (미리보기)
    notion image
     
    # = 주석
    .bashrc 파일 = 사용자가 ubuntu 아이디로 로그인해서 접속할 때(보통 껐다가 켜면) 실행되는 파일 → 내가 로그인할 때마다 실행하고 싶은 일을 써놓으면 되는 곳 (로그인할 때 자동실행되는 스크립트)
     

    mkdir

    폴더 생성 명령어
    그래픽이 없는 인터페이스인 CLI(Command Line Interface)에서는 응답이 없으면 성공을 의미한다.
    notion image
     

    touch

    파일 생성 명령어
    notion image
     

    rm

    폴더/파일 삭제 명령어
    1. -f : 강제 삭제 옵션
    1. -r : 폴더 내부의 파일까지 함께 삭제 (recursive = 재귀적)
    notion image
     
    rm 명령어는 기본적으로 파일만 삭제를 하는데 옵션에 의해 폴더 또한 삭제할 수 있게 된 것이다.
    따라서 폴더의 경우 내부의 파일 존재 여부와 상관없이 rm이나 rm -f로 삭제되지 않는다. 따라서 -r 옵션을 통해 내부의 파일까지 함께 삭제하도록 해야한다.
    notion image
     

    Ctrl + c

    명령어 입력시 프로그램이 멈춘다거나 명령어를 인식하지 못해 대기 중일 때 ctrl + c를 통해 명령어 취소가 가능하다. 이를 interrupt라고 한다.
     

    cp (copy)

    파일을 복사하는 명령어
    cp [복사할 파일명] [생성할 파일명]
     
    a.txt 파일을 생성하고 내부에 다음과 같이 내용을 작성하였다.
    notion image
     
    그리고 a.txt를 복사하여 b.txt라는 파일을 만든다.
    notion image
     
    b.txt를 열어보면 복사한 a.txt와 같은 내용이 복사되어 있는 것을 알 수 있다.
    notion image
     

    mv (move)

    파일의 위치 이동시키는 명령어
    mv [이동시킬 파일명] [이동시킬 위치]
     
    명령어에 의해 b.txt 파일이 user라는 폴더로 이동한 것을 확인할 수 있다.
    notion image
     
    파일을 이동시킬 때 이름을 변경해서 이동시킬 수 있다.
    mv [이동시킬 파일명] [이동시킬 위치]/[변경할 파일명]
    notion image
     
    위치를 변경하지 않고 이름만 변경하는 것도 mv 명령어로 가능하다.
    mv [기존 파일명] [변경할 파일명]
    notion image
     

    ln (link)

    참조(바로가기) 파일을 만드는 명령어
    notion image
     
    바로가기(soft link) 파일 생성
    ls -s [원본 파일명] [바로가기 파일명]
     
    ln -s를 통해 새로운 파일이 생겼고 ls - l을 통해 상세보기를 하니 b.txt와는 달리 맨 앞에 l이 붙어있고 b-link.txt → b.txt라고 되어있다. b-link.txt가 b.txt를 참조하고 있다는 의미이다. 이를 통해 b-link.txt 파일이 b.txt로 연결되는 바로가기 파일임을 알 수 있다.
     
    notion image
     

    Ubuntu Repository

    프로그램을 설치한다는 것은 다운로드 이외에 환경변수 등록, 링크파일 등록, 시작프로그램 등록, 방화벽 개방 등 추가적인 과정이 필요하다. 이를 위해 설치를 도와주는 매니저 프로그램을 사용하는 것이 좋다. 예시로 윈도우는 msi, 리눅스는 api, yum 등이 있다.
    프로그램 사이트에서 프로그램을 다운로드하면 파일의 확장자가 윈도우에선 .zip이었지만 우분투에서는 .tar이다. 윈도우에서 .msi 설치 파일을 더블 클릭하면 바로 설치가 되지만 CLI 환경인 리눅스에서는 .deb 설치파일을 더블 클릭한다고 설치되지 않는다.
    .deb를 설치하는 방법은 다음과 같다.
    1. wget 명령어로 사이트에서 다운받는다.
    1. .tar로 압축된 파일을 풀거나 .deb 설치 파일로 설치한다.
    1. 설치가 끝나면 추가 설정들을 한다.
     

    Ubuntu Repository

    Ubuntu Repository는 우분투에서 각각의 사이트에 올라와있는 프로그램들을 한 곳에서 설치할 수 있도록 하는 저장소이다. 우분투 레포 운영자 측에서 새로운 프로그램이 생기면 알아서 추가해준다.
     

    Ubuntu Repository 등록

    우분투에서 Ubuntu Repository에 접근하기 위해서는 /etc/apt/sources.list 파일에 Ubuntu Repository 주소를 등록해야 한다.
     

    Ubuntu Repository 목록 가져오기

    어떤 프로그램들을 가지고 있는지 확인하기 위한 apt에 대한 목록이 처음에는 비어있다. 따라서 프로그램들을 다운받는 것이 아니라 프로그램 목록을 갱신하기 위한 명령어는 다음과 같다.
    apt udpate
     

    프로그램 설치

    아래의 명령어로 목록에 있는 프로그램을 설치할 수 있다. 즉 프로그램의 다운 및 설치가 가능하다.
    apt install [프로그램명]
     

    PPA 저장소

    Ubuntu Repository는 패키지 하나당 한 버전을 제공하여 새로운 안정된 버전이 생기면 기존의 버전을 덮어쓰기하거나 삭제되는데 개인이 필요한 프로그램, 이전 버전의 프로그램 등은 PPA라는 개인 저장소에 올려둘 수 있다. 이 주소 또한 Ubuntu Repository와 마찬가지로 /etc/apt/sources.list 파일에 주소를 등록해두면 사용 가능하다.
     

    sudo apt update

    처음 apt 목록에는 아무 프로그램도 없으므로 갱신해줘야 한다. 이를 위해 apt update 명령어를 입력하면 다음과 같이 권한이 없다는 응답을 확인할 수 있다.
    notion image
     
    저장소 목록 갱신에 대한 권한은 최상위 관리자가 가지고 있기 때문에 현재 ubuntu 사용자로 접속한 나는 저장소 목록을 갱신할 수 없다.
    notion image
     
    그러나 최상위 관리자가 아니더라도 명령어 앞에 sudo를 붙이면 슈퍼 유저의 권한을 위임받아 명령어를 실행할 수 있다.
    sudo apt update
    notion image
     

    apt-cache

    갱신된 apt 목록을 조회하는 명령어
    notion image
     

    서브 명령어 (하위 명령어)

    apt-cache 뒤에 서브 명령어를 붙여 apt 목록 조회 후 추가적으로 무엇을 할지 지정할 수 있다.
    apt-cache [서브 명령어] [인자]
     
    apt-cache search tomcat 명령어를 실행하니 tomcat 관련 프로그램들이 조회되는 것을 볼 수 있다.
    notion image
     

    파이프라인

    하나의 명령어의 출력을 바로 다음 명령어의 입력으로 전달하는 방식으로 기호는 | 를 사용한다.
    명령어1 | 명령어2 | 명령어3
     

    grep (global reqular expression print)

    문자열 검색 도구로 패턴을 찾아 일치하는 것을 출력하는 명령어
    grep [옵션] "찾을문자열" 파일이름
     
    apt 목록 중 search 서브 명령어를 통해 찾은 tomcat에 대한 것들을 전부를 다시 tomcat 이라는 문자를 가지고 있는 것들만 남도록 다시 필터링할 수 있다.
    apt-cache search tomcat | grep tomcat
    notion image
     

    tomcat 설치

    이제 톰캣을 설치할건데 중간에 저장공간 사용에 대한 질문을 한 번에 대답하도록 하는 -y까지 추가해서 apt install 명령어를 실행한다.
    sudo apt install -y tomcat10
     

    포트 확인

    설치가 잘 되었는지는 포트 활성화 확인을 통해 알 수 있다. 톰캣은 웹 서버이므로 포트를 가지고 있고 웹 서버가 실행될 때 포트가 돌아간다.
     
    먼저 netstat 명령어 패키지를 한다.
    sudo apt install net-tools
    notion image
     
    다음의 명령어를 통해 8080번 포트가 돌아가고 있다는 것을 확인할 수 있다.
    netstat -nlpt
    notion image
     
    그러나 EC2 IP주소:8080 주소로 접속하면 실패한다.
    notion image
     
    이는 EC2 서버의 inbound 규칙 중 8080 포트가 열려있지 않아서 해당 포트 번호로 들어갈 수 없기 때문에 접속에 실패한 것이다. 인바운드 규칙이란 클라이언트가 자신의 서버 데이터에 들어올 수 있는 규칙을 말한다.
    아래의 사진을 통해 22 포트만 열려있는 것을 알 수 있다.
    notion image
     
    따라서 aws 사이트로 가서 해당 서버 인스턴스의 인바운드 규칙 중 8080 포트를 열어줘야 한다.
    notion image
     
    다시 인스턴스 인바운드 규칙을 확인하면 8080 포트가 열려있고 EC2 IP주소:8080 주소로 접속 가능하다. 즉, tomcat이 잘 설치되어서 실행되고 있다는 뜻이다.
    notion image
    notion image
     

    프로세스

    프로세스

     

    스레드

     

    context-switching

     

    sleep

     

    service

    apt 명령어로 프로그램을 설치하면 서비스에 등록이 되고 실행파일을 직접 찾아 실행할 필요가 없어지게 된다.
     
    아래의 명령어로 서비스 목록을 조회할 수 있다.
    service --status-all
     
    실행 중인 서비스는 [ + ], 실행 중이지 않은 서비스는 [ - ]로 표시된다.
    notion image
    서비스 종료 명령어
    sudo service [서비스명] stop
     
    8080 포트가 비활성화되면서 tomcat이 종료되었음을 확인할 수 있다.
    notion image
     
    서비스 시작 명령어
    sudo service [서비스명] start
     
    8080 포트가 활성화되고 tomcat이 다시 실행되고 있는 것을 알 수 있다.
    notion image
     

    systemctl

    위의 service 명령어는 systemctl의 wrapper script, 추상화로 보다 쉽게 사용할 수 있도록 나온 명령어이다. service로 제어되지 않는 서비스는 근본적인 서비스 관리 도구인 systemctl을 사용해야 한다.
    sudo systemctl list-unit-files
     
    apt 명령어에 의해 설치된 모든 시스템들을 조회 가능하다. q 혹은 ctrl+c로 인터럽트를 걸어 빠져나올 수 있다.
    notion image
     
    이 중에서 tomcat을 검색해보면 enabled 상태인 것을 확인 가능하다.
    notion image
     
    status 서브 명령어를 추가하면 추가적으로 상태를 확인할 수 있다. tomcat은 현재 active (running)으로 잘 실행되고 있다.
    sudo systemctl status tomcat10
    notion image
     
    시스템을 종료시킨 뒤 다시 상태를 확인해보면 비활성 상태가 된 것을 볼 수 있다.
    sudo systemctl stop tomcat10
    notion image
     
    포트로 접속해보니 제대로 종료되어있다.
    notion image
     
    다시 실행하였을 때 응답이 없고 포트로 접속이 되면 잘 실행되는 것이다.
    notion image
    notion image
     

    ps

    프로세스 명령어
     
    -ef 옵션을 통해 실행 중인 프로세스 목록을 조회가능하다.
    ps -ef
     
    명령어 실행 결과 조회된 프로세스 목록을 보면 UID, PID, PPID 등이 있다.
    • UID : 프로세스의 주인
    • PID : 현재 프로세스 아이디
    • PPID : 이 프로세스를 실행한 부모 프로세스의 PID
    즉 3~17번까지의 프로세스들은 모두 2번 PID 프로세스를 부모로 가진다.
    notion image
     
    tomcat은 현재 실행중이며 PID가 116075이고, PID가 1인 프로세스를 부모로 가진다.
    notion image
     

    kill

    프로세스 종료 명령어
    systemctl stop으로 프로세스를 종료 가능하지만 불가능한 경우, 강제 종료를 시켜야 하는 경우 또는 서비스로 등록되어있지 않은 프로세스를 종료시킬 때 사용한다.
     
    다양한 kill 옵션들이 존재하는데 번호를 사용하여 종료 가능하다.
    자주 사용하는 것은 9번 SICKILL으로 강제 종료 옵션으로 이 경우 실행중이던 프로그램이 하던 일을 다 마치지 못하고 종료될 수 있다.
    안전하게 종료하기 위해서 사용하는 것이 15번 SIGTERM인데 디폴트 옵션으로 옵션을 명시하지 않아도 15번 옵션이 적용된다.
    2번 SIGINT 옵션은 ctrl+c과 같은 인터럽트(방해) 역할을 한다.
     
    tomcat을 kill 명령어로 종료시켜보자.
    tomcat 프로세스의 주인은 tomcat이고 PID는 116075이다.
    notion image
     
    나는 현재 ubuntu 사용자이므로 프로세스의 주인인 tomcat이 아니므로 권한이 없기 때문에 sudo 명령어를 사용하여 삭제한다.
    notion image
    notion image
     
    포트를 확인해보면 8080이 종료된 것을 알 수 있다.
    notion image
     

    restart

    systemctl 명령어로 종료시키지 않고 kill 명령어를 통해 프로세스가 종료되면 exited 되고 systemctl 입장에서의 비정상적인 종료는 start되지 않고 restart 명령어로만 재실행 가능하다. 그리고 stop 이후 start하면 restart와 같은 효과이다.
     

    tomcat10 pid 찾는 스크립트 작성하기

    스크립트란 시스템을 제어하기 위한 명령어를 여러 줄로 적어 시스템을 제어하는 대본을 의미한다.
     
    ps -ef | grep tomcat10 명령어를 입력하면 tomcat과 내가 방금 입력한 명령어인 grep까지 결과로 나온다. 내가 방금 입력한 명령어도 프로세스가 되어 목록에 나온 것이다.
    notion image
     
    grep 명령어의 -v 속성으로 grep 명령어를 제외하고 출력되도록 할 수 있다.
    ps -ef | grep tomcat10 | grep -v grep
    notion image
     
    검색 결과를 확인해보면 tab으로 나뉘어져 있는 것을 알 수 있다.
    notion image
     

    awk

    awk 명령어를 사용하면 공백을 기준으로 토큰화시켜 배열로 만들 수 있다. awk 배열은 0이 아닌 1번지부터 시작한다. 2번지의 PID 값만 찾을 때는 ‘’를 사용하여 검색한다.
    ps -ef | grep tomcat10 | grep -v grep | awk '{print $2}'
    notion image
     
    Share article

    jay0628