inblog logo
|
sxias
    AWS

    [AWS] 2. Linux Commands

    문정준's avatar
    문정준
    Jun 12, 2025
    [AWS] 2. Linux Commands
    Contents
    1. clear2. pwd3. cd4. ls5. 절대 경로 vs 상대 경로6. help7. -a / —all8. mkdir9. touch10. rm11. Ctrl + C12. cp13. mv14. ln (link)15. Ubuntu Repository16. sudo, apt17. Process & Thread & Context Switching18. service19. systemctl20. ps21. su22. find23. Logging
     

    1. clear

    • 화면 비우기
    clear
    notion image
     

    2. pwd

    • 내 현재 위치 확인
      • default location : /home/사용자명
    pwd
    notion image
     

    3. cd

    • 폴더 이동
    1. cd .. : 상위 폴더 이동
    1. cd ‘path’ : 절대 경로/상대 경로(path)로 이동
    1. cd / : 최상위 폴더로 이동
    cd .. cd /home cd /
    notion image
     

    4. ls

    • 현재 위치의 모든 폴더 및 파일 표시
      • ls -l : 자세히 보기
      • ls -a : 숨김 파일도 모두 표시
    ls ls -l ls -a
    notion image

    파일 정보

    • d : directory
    • l : link (soft link)
      • r : read
      • w : write
      • x : execute
     

    5. 절대 경로 vs 상대 경로

    • 절대 경로
      • 정확한 디렉토리 경로를 작성해야 함
        • 최상위 폴더에서 사용자 폴더로 이동하려면 : cd /home/사용자명
        • cd /home/ubuntu
    notion image
    • 상대 경로
      • 현재 폴더 내부에서 찾아갈 수 있는 경로 또는 path로 지정된 경로
      • home 폴더 내부에서는 / 없이 사용자명 폴더로 이동 가능
      • cd ubuntu
        notion image
      • 사용자명 폴더로 바로 이동하려면 cd ~로도 이동 가능 (path)
      • cd ~
    notion image
     

    6. help

    • 명령어의 사용 방법 (options) 표시
      • -a, -l 등 하이픈이 1개이면 약어, —help, —version, —all 등 하이픈이 2개면 전체 이름 작성
        • Convention이므로 명령어마다 다를 수 있음
    notion image
     

    7. -a / —all

    • 폴더 내부의 숨김 파일도 표시
    • 폴더의 -l 명령어와 함께 자주 사용
      • 옵션끼리 붙여서 사용할 수 있음
    notion image
     

    8. mkdir

    • 새 폴더 생성
    mkdir '새 폴더명'
    notion image
    • 이미 폴더가 존재하면 생성 불가
    notion image
     

    9. touch

    • 새 파일 생성
      • 만들어진 파일은 내용이 비어있는 상태 : 에디터 등을 활용해서 내용을 작성해야 함
    touch '파일명'
    notion image
     
    • 파일이 이미 존재하면 동작하지 않음
      • 내용 작성 후 새로 생성해도 파일명이 동일하면 생성 / 덮어쓰기 되지 않음
    notion image
     

    10. rm

    • 폴더 또는 파일 삭제
      • w 권한이 있는 폴더 및 파일만 삭제 가능
        • -f : 강제 삭제 (확인 없이 바로 삭제 : Shift + Delete)
        rm -f '파일명'
        notion image
      • 폴더는 rm 명령어로 바로 삭제 불가
        • -d : 빈 폴더 삭제
        rm -d '폴더명'
        notion image
      • 폴더 내부에 자식 파일이 있을 경우 바로 삭제 불가
        • -r : 자식 파일도 함께 삭제
        rm -r '폴더명'
        notion image
      • rm -rf : 해당 폴더 및 내부 자식까지 강제 삭제
        • 주의 : root 및 시스템 폴더도 삭제 가능함
     
    • 다른 사용자가 만든 파일이라 하더라도, 해당 사용자가 권한을 가진 폴더 내부에서 작성한 경우는 해당 권한이 우선적으로 처리
    notion image

    11. Ctrl + C

    • 인터럽트 키
      • 동작중이거나 명령어 입력 중 대기 상태일 경우 취소
    ^C
     

    12. cp

    • 파일 복사
    cp '복사할 파일명' '새 파일명'
    notion image
     

    13. mv

    • 파일 위치 이동
      • 권한이 있는 폴더로만 이동 가능
    mv '파일명' '폴더명'
    notion image
    • 파일 이름 변경
      • 폴더 이동 시 이름을 바꿔서 이동시킬 수 있음
      • 파일명만 입력 시 이름만 바뀜
    mv '파일명' '폴더명/새파일명' mv '파일명' '새파일명'
    notion image
    notion image
     

    14. ln (link)

    • 바로가기 링크 생성
      • 하드 링크 vs 소프트 링크
      • notion image
      • 하드 링크 vs 파일 복사
    notion image
    ln '파일명' '링크명' # hard link ln -s '파일명' '링크명' # symbolic(soft) link
    notion image
     

    15. Ubuntu Repository

    • 윈도우와 다르게 리눅스는 GUI가 없기 때문에 명령어로 직접 설치 필요
      • 설치를 도와주는 Installation Manager가 있으면 편하게 설치할 수 있지만, 없다면 명령어 및 환경 변수 등록, 방화벽 포트 개방 등 여러 절차를 거쳐야 함
        • 리눅스의 설치 매니저는 apt / yum
        • 직접 설치할 경우
            1. wget ‘사이트 내 파일 링크’
            1. tar로 압축 풀기 or .deb 파일 실행
            1. 추가 환경 설정 (path 등록, 방화벽 설정 등)
      • 이 절차를 생략하기 위해 설치 매니저인 apt를 사용함
    • Ubuntu Repository : Ubuntu Linux에서 사용 가능한 프로그램들이 모여있는 리포지토리
      • 프로그램은 Ubuntu Repository 측에서 자동으로 등록해줌
      • apt update / apt install 등의 명령어를 사용하여 내 Ubuntu에서 사용 가능한 프로그램을 다운로드 및 명령어 업데이트
     
    • /etc/apt/sources.list.d/ubuntu.sources : ubuntu repository 주소
    notion image
     

    16. sudo, apt

    • sudo : super user 권한을 받아서 명령어를 수행할 수 있는 접두어
      • apt는 root 권한이 필요하므로 일반 사용자가 호출 시 접근 불가
      • notion image
         
    • apt : 설치 매니저 호출
      • update : apt 내부의 목록 갱신
      • sudo apt update
        notion image
         
      • apt-cache : apt 목록 확인
        • search : 다운로드 받을 수 있는 리포지토리 검색
        apt-cache search 'name'
    notion image
     
    • 정확하게 검색하기 위해서는 필터링이 필요
      • 파이프라인 (Pipeline, |)을 사용하면 필터링 수행 가능
      • grep : 해당 문자열이 포함된 결과만 표시
    apt-cache search tomcat | grep tomcat
    notion image
     
    • apt list : 전체 apt 목록 확인
      • grep을 이용해서 해당 문자열이 포함된 명령어만 찾을 수 있음
    apt list | grep tomcat
    notion image
     
    • install : 리포지토리에서 설치
      • 정확한 이름 작성 필요
      • -y : 모든 사항에 동의 후 설치
    sudo apt install 'name' sudo apt install -y 'name'
    notion image
     
    • tomcat 설치 확인 : netstat 설치 후 네트워크 정보 확인
    sudo apt install net-tools netstat -nlpt
    notion image
     
    • 방화벽 (Inbound) 설정 후 접속 시 접속 가능
    notion image
     

    17. Process & Thread & Context Switching

    Process

    • CPU는 메모리에 Load된 프로그램을 수행(연산)
      • 메모리 (RAM)에 올라온 프로그램들을 Process라고 하며, 현재 실행 중인 프로그램들이 메모리에 올라오게 됨
     

    Thread & Context Switching

    • 메모리에 여러 프로그램이 올라온 상태에서, CPU가 일을 처리함
      • A라는 프로그램이 데몬 (Daemon, 계속 실행되는) 프로그램일 경우, CPU는 계속 A 프로그램을 동작시켜야 함
      • A 아래쪽에 Load된 프로그램들이 동작할 수 없게 됨
    • 이 현상을 해결하기 위해 사용하는 것이 스레드 (Thread)
      • CPU가 일정한 시간 동안만 프로그램에 관여하며, 다른 프로그램들도 함께 처리하는 것을 의미
        • CPU가 동작하는 일정한 시간을 정하는 것을 Time-Slicing
        • 일정한 시간동안 CPU가 여러 프로그램들을 순회하며 동작시키는 것을 Context Switching
    notion image
     

    Sleep

    • CPU가 Context Switching을 수행하기 위해서는 작업 중간 중간에 쉬는 시간이 필요
      • CPU의 자원을 100% 활용하게 되면 다른 작업 처리가 불가능
      • 인터럽트 불가 → 다른 프로그램 처리 (Context Switching) 불가
    • 이 쉬는 시간을 sleep이라고 함
     

    18. service

    • apt 설치 후 등록된 서비스 목록
      • 서비스에 등록되면 직접 실행할 필요가 없음
    • 서비스 목록 확인
      • 실행 중인 경우 [ + ], 실행 중이 아닌 경우 [ - ]로 표시
    service --status-all
    notion image
    • 서비스 종료
      • sudo 권한 필요
    sudo service '서비스명' stop
    • 8080 포트가 사라진 것을 확인 가능
    notion image
    notion image
     

    19. systemctl

    • service가 지원되지 않는 경우 systemctl로 관리해야 함
      • apt를 통해 설치한 모든 프로그램 확인 가능
     
    • 현재 실행 중인 모든 시스템 확인
      • Enter를 눌러 다음 페이지로 넘어가고, Ctrl + C 또는 q로 나올 수 있음
    sudo systemctl list-unit-files
    notion image
    • 파이프라인을 사용하여 서비스 검색 가능
    sudo systemctl list-unit-files | grep '서비스명'
    notion image
     
    • 서비스 상태 확인
    sudo systemctl status '서비스명'
    notion image
     
    • 서비스 실행 / 종료
    sudo systemctl start '서비스명' sudo systemctl stop '서비스명'
    notion image
    notion image
     

    20. ps

    ps

    • 현재 실행 중인 프로세스 목록 확인
    ps -ef
    notion image
    • PID : 프로세스 ID (프로세스 고유 번호)
    • UID : 프로세스 주인 ID
     

    kill

    • 프로세스를 systemctl로도 종료시킬 수 없을 때 (서비스 등록이 안되어 있을 때 등) 강제 종료
     
    • 프로세스 종료 옵션 확인
    kill -l
    notion image
    • 9 (SIGKILL) : 강제 종료
    • 15 (SIGTERM) : 대기 후 종료 (default)
     
    • 해당 프로세스 UID 확인
      • 두 번째 탭에 있는 숫자가 UID : tomcat의 UID는 95204
    ps -ef | grep '프로세스명'
    notion image
     
    • 각 프로세스는 UID의 주인만 종료(kill) 가능
      • sudo 권한을 이용하여 종료
    sudo kill PID sudo kill -9 PID # SIGKILL (강제종료) sudo kill -15 PID # SIGTERM (default, 대기 후 종료) sudo kill -2 PID # SIGINT (인터럽트)
    notion image
     
    • kill 한 이후 서비스 재시작
      • Active(exited) 상태일 경우 서비스는 시작된 상태이나 실제로 작동하지 않음
    sudo systemctl restart '서비스명'
    notion image
     

    awk

    • script를 이용하여 자동 실행 및 환경 설정이 가능
      • 공백을 기준으로 토큰화하여 배열로 제작 : 파싱 가능
     
    • 현재 실행 중인 ‘tomcat10’ 이라는 프로세스를 서비스 종료하는 스크립트
      • 토큰 배열은 1번지부터 시작 : PID는 2번지에서 찾아야 함
      • ps -ef 이후 명령어 입력 시 해당 명령어도 찾으므로 명령어는 제거 : grep -v
      • 2번지 값을 반환 : awk ‘{print $2}’
    sudo kill `ps -ef | grep tomcat10 | grep -v grep | awk '{print $2}'`
    notion image
     

    21. su

    • root 계정 접속
      • 비밀번호를 입력해야 접속 가능 : 비밀번호를 모름 → 생성 필요
    su root
    notion image
     
    • 비밀번호 생성 / 변경
      • 비밀번호는 입력해도 보이지 않음
    sudo passwd root
    notion image
     
    • 변경한 비밀번호로 로그인 시 계정 변경
    notion image
     

    Permission

    • 모든 파일과 폴더에는 권한이 존재
    notion image
    • 다음과 같이 root로 test1.txt 파일을 만들었을 때, 다음과 같은 표시 출력
    -rw-r--r-- root root test1.txt __________ ____ ____ __________ 권한 사용자 그룹 파일명
     
    • 권한을 세분화하여 표시
      • 맨 앞 : 파일 구분
        • d : directory
        • l : link
        • - : file
      • 첫 3글자 : 사용자 권한
      • 중간 3글자 : 그룹 권한
      • 마지막 3글자 : 다른 사용자 권한
        • r : 읽기 권한 (read)
        • w : 쓰기 (수정) 권한 (write)
        • x : 실행 권한 (execute)
      • 각 권한을 총 3비트씩 쪼개어, 0 ~ 7까지 권한 설정 가능
        • r : 4
        • w : 2
        • x : 1
      • rw일 경우, 4 + 2 = 6, r일 경우 4이므로 이 파일의 권한은 644
    - rw- r-- r-- _ ___ ___ ___ ^ user group other | type
     

    chmod

    • 권한을 변경하는 명령어
      • 해당 파일의 사용자 또는 root 등의 관리자 계정에서 권한 변경 가능
    sudo chmod 646 test1.txt
    notion image
     

    chown

    • 그룹을 변경하는 명령어
     
    notion image
    • test2.txt는 others인 ubuntu에게 수정 권한이 없음
    • 파일의 그룹을 ubuntu로 옮겨 그룹 내 사용자만 파일 수정이 가능하도록 권한 설정 가능
     
    • 파일 권한 설정 : user, group만 읽기, 수정 가능
    sudo chmod 664 test2.txt
    notion image
     
    • test2.txt의 그룹을 ubuntu로 이동
    sudo chown root:ubuntu test2.txt
    notion image
     
    • 정상적으로 수정 가능
    notion image
     

    22. find

    • 파일 찾기
      • Linux는 설치한 파일을 한 파일 내에 모아두지 않음
      • 파일을 찾기 위해서는 명령어를 통해 직접 찾아야 함
    sudo find / -name '파일명'
    notion image
     

    Changing Port Number

    • tomcat의 포트 번호를 8080에서 8000으로 변경 → server.xml 파일을 찾아야 함
      • /etc/tomcat10 폴더 내에서 server.xml 파일 검색
    sudo find /etc/tomcat10 -name server.xml
    notion image
     
    • 해당 폴더 진입 후 권한 변경
      • sudo chmod 660 server.xml
      • sudo vi server.xml ← 관리자 권한으로 vi 에디터 실행 : 수정 후 저장 가능
    notion image
    notion image
     
    • 수정 후에 포트를 확인해도 그대로 8080 포트 사용 : 서비스 재시작 필요
      • sudo systemctl restart tomcat10
    notion image
     
    • 포트 번호 변경 시 보안 정책 변경 필요 : AWS 인바운드 규칙 수정
    notion image
    • 포트 변경 후 정상 진입 확인
    notion image
     

    23. Logging

    tail

    • 서버에서 사용자 접속, 요청 등에 대한 로그를 확인해야 함 → 디버깅
      • catalina.out 파일 확인
    • tail : 가장 끝의 10줄을 보여주는 명령어
      • 로그가 계속 작성되기 때문에 tail로 보면서 관리해야 함
      • -f : 실시간으로 확인 가능
    cd /var/log/tomcat10 sudo tail -f catalina.out
    notion image
     
    • 서버 재 시작 시 실시간으로 로그가 남는 것을 확인 가능
    notion image
     

    Standard In/Out/Error

    • stdin : 표준 입력 스트림
      • 키보드 입력
    • stdout : 표준 출력 스트림
      • 터미널 및 콘솔 출력
    • stderr : 에러 출력 스트림
      • 기본적으로 출력 스트림과 동일
     
    • ‘>’ 기호를 사용하여 출력 위치 변경 가능
      • 2> : 에러만 저장
      • 1> : 정상 출력만 저장
    sudo tail -f catalina.out > log.txt # 모든 로그 저장 sudo tail -f catalina.out 2> error.txt 1> log.txt # 에러는 error.txt, 정상 로그는 log.txt에 저장
    notion image
     
    Share article
    Contents
    1. clear2. pwd3. cd4. ls5. 절대 경로 vs 상대 경로6. help7. -a / —all8. mkdir9. touch10. rm11. Ctrl + C12. cp13. mv14. ln (link)15. Ubuntu Repository16. sudo, apt17. Process & Thread & Context Switching18. service19. systemctl20. ps21. su22. find23. Logging

    Sxias ㆍ a32176740@gmail.com

    RSS·Powered by Inblog