[AWS] 2. Linux Commands

문정준's avatar
Jun 12, 2025
[AWS] 2. Linux Commands
 

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
 
  • 바로가기 링크 생성
    • 하드 링크 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

sxias