Linux 개요

2024. 3. 22. 11:52
728x90

드디어 나의 리눅스 티셔츠를 자랑할 날이 왔다~ ㅋㅎㅋㅎ

 

1. Linux 소개

- 운영 체제 : 컴퓨터를 운영하기 위한 소프트웨어.

  • 컴퓨터의 물리적 자원을 관리
  • 소프트웨어가 자원을 사용할 수 있도록 관리
  • 사용자에게 인터페이스를 제공해 컴퓨터를 사용할 수 있도록 

- 커널 (Kernel) : 운영체제의 여러 구성 요소 중 핵심

  • 실제 물리적 자원과 여러 프로세스를 관리
  • OS의 다른 요소는 커널을 활용한 소프트웨어에 가깝다.

- Linux Kernel : 많은 대기업들이 Linux에 관심을 가지고, 현재 데스크탑을 제외한 수많은 컴퓨터 OS는 Linux 커널을 사용한다.

 

- Shell : 커널과 외부 소프트웨어를 연결해주는 프로그램 (커널을 감싸는 껍데기..)

  • 사용자의 명령을 해석하여 커널로 전달
  • 사용자의 프로세스를 관리
  • bash, zsh 등

- Terminal : 과거에는 Shell을 사용하기 위한 컴퓨터의 작은 단말.. -> 모니터와 키보드 대신 소프트웨어로 Shell과 소통할 수 있다. -> Shell을 CLI로 다룰 수 있는 인터페이스 

  • 터미널이 실행되면, 터미널은 내부에서 Shell 프로그램을 실행.
  • 터미널에 글을 입력하면, 터미널은 그것을 Shell로 전달
  • 터미널을 유지하는 세션을 Shell Session이라고도 부름.

 

** SSH로 원격 컴퓨터에 접속하면? > 인증에 성공하면 해당 컴퓨터의 Shell 프로그램이 실행되고, 우리 컴퓨터의 터미널로 해당 Shell에 명령을 전달.

 

1) 메뉴얼과 사용법 

// 메뉴얼 열어보기
man

// 간단 사용법 출력 옵션
--help

 

2. 파일 탐색하기

명령어

pwd  현재 경로 출력 cat 파일의 내용물 출력
ls 특정 경로 파일들 출력 less 스크롤을 방향키로
cd 현재 작업 경로 변경 tail 마지막 n줄 내용물 출력
touch 파일의 타임스탬프 수정 mkdir 경로(폴더) 만들기
mv 파일의 위치 변경 rmdir 경로(폴더) 삭제
cp 파일 복사    
rm 파일 삭제    

 

 

- 현재 경로 출력 : Print Working Directory 

pwd

- 특정 경로의 파일들 출력 : List Directory

  • '-' 옵션은 여러 개를 한번에 적용 가능
  • ls -a : 숨긴 파일('.'으로 시작) 출력
  • ls -l : 목록 형태로 출력
  • 경로를 생략하면 현재 경로를 기준으로 경로를 전달할 수도 있다. 
  • ll = ls -al
ls
ls -a
ls -l
ls -al
ls -alt (숨긴 파일까지 목록으로 시간 순으로 정렬)
ls -alrt (숨긴 파일까지 목록으로 시간 역순으로 정렬)
ls -al .ssh

- 현재 작업 경로 변경 : Change Directory

  • 현재 경로 : .
  • 상위 경로 : ..
cd <원하는 폴더>
cd .
cd ..

- 파일의 내용물 출력 : cat

- 여러줄의 내용을 방향키로 스크롤이 되게 조회 : less

방향키로 스크롤 가능~

 

- 파일의 마지막 n줄 내용물 출력 : tail 

 

- 파일의 타임스탬프 수정 : touch 

  • 파일이 없을 경우 생성
touch <파일>

>> test.txt는 없는 파일이기 때문에 새로 생성된다. 

>> bashrc는 있는 파일이므로 타임스탬프만 변경된다. 

 

- 파일의 위치 변경 : mv (폴더도 이동 가능)

  • 이미 존재하는 파일의 경우 덮어쓴다. 
mv test.txt .ssh/

>> test.txt -> test2로 바뀐다.... (약간 위험한 경우)

 

- 파일 복사 : cp 

  • 이미 존재하는 파일의 경우 덮어쓴다.
cp <대상파일> <어디로 복사할지>

test2를 .ssh 폴더 내로 복사한다.

- 파일 삭제 : rm

  • 없는 파일은 삭제 불가
  • rm -rf (내부에 파일이 있어도 강제로 폴더를 삭제한다) 

testfolder 삭제 불가능 -> -rf 옵션을 사용해서 강제 삭제

- 경로(폴더) 만들기 : mkdir

  • -p : 인자로 주어진 경로 중 없는 경로는 다 만든다.
mkdir test1 
mkdir -p test1/test2/test3

- 경로(폴더) 삭제 : rmdir

  • 파일이 있는 경우 실패
  • 똑같이 rm -rf 사용하면 내부에 파일이 있어도 삭제 가능

 

 

- Vim : 텍스트 기반 코드 에디터

vi <파일명>

> 상태 :

  • 기본 상태 (Normal Mode) : 처음 실행시의 상태. 입력 상태나 명령 상태에서 ESC를 누르면 기본상태로 돌아옴.
  • 입력 상태 (Insert Mode) : 기본 상태에서 i를 입력하면 입력 상태. 화면 커서를 이동키로 이동하고, 키보드 입력을 파일에 반영하게 됨. 
  • 명령줄 상태 (Cmdline Mode) : 명령을 입력받기 위한 상태. 저장, 종료 명령을 입력하기 위해 : 입력, 문구 검색을 위해 / 입력. ESC를 입력하거나 명령 입력이 완료되면 이전 상태로 돌아간다.
  •  

normal mode -> i -> insert mode -> : 혹은 / -> command mode

insert mode -> esc -> normal mode

normal mode
insert mode

> esc를 누르면 normal 모드가 된다

이때 변경사항이 있는데 그냥 :q를 해버리면 실패한다. ! 추가하면 변경사항 폐기

command mode

:w 파일 변경사항 저장

:q Vim 종료

그러면 이렇게 파일 내용이 변경되었다. 

 

 

3. 환경 변수

: 프로세스가 실행되는 방법에 영향을 주는 사용자 정의 가능한 변수

 

1) 환경 변수

- 만약 특정 환경변수에 정의된 값을 확인하고 싶다면 echo 명령 활용

echo $<환경변수>

echo $HOME

// 환경변수 변경
export <환경변수>=<변수값>

export HOME=/home/ubuntu/test2

export JWT_SECRET=alkjglkdjgjwleigjhlihjlkjtrhljtlhj
// 이런식으로 암호같은 것들을 환경변수로 사용할 수 있다. 단, shell session이 유지되는 동안만 저장된다
// 종료된다면 사라진다..

 

- Shell 프로세스에 정의된 환경 변수를 확인 : env 명령어

env

 

- 환경 변수 설정 해제 : unset 명령어

unset <변수명>

 

2) PATH :

특정 경로들을 : 로 구분해 모아둔 환경 변수. Shell에 명령어를 전달할 때 Shell이 해당 명령이 존재하는지를 확인하기 위한 환경 변수. 

- PATH 환경 변수를 삭제할 경우(unset PATH) : pwd를 비롯한 기본 내장된 명령어를 제외하고 실행되지 않는다.

 

- 즉 PATH 변수가 있어야 명령어를 실행할 수 있다.

 

 

- 특정 프로그램(JDK등)을 설치했을 때 해당 프로그램의 실행파일이 존재하는 경로를 추가하게 되면, 해당 프로그램을 명령어처럼 Shell이 유지되는 곳 어디에서든 실행할 수 있게 된다. 

 

-> Download GraalVM

https://www.graalvm.org/downloads/

 

Download GraalVM

 

www.graalvm.org

wget https://download.oracle.com/graalvm/22/latest/graalvm-jdk-22_windows-x64_bin.zip

 

다운로드 완료

이후 압축해제

tar -xzvf graalvm-jdk-17_linux-x64_bin.tar.gz

 

> 이후 bin 경로로 이동하여 그 디렉토리에서 java 명령어를 사용하면 사용이 가능하다.

만약 어디서든 실행하고자 한다면 이 디렉토리를 HOME 환경 변수로 설정을 해주면 가능하다.

cd graalvm-jdk-17.0.10+11.1/
cd bin
./java -version

graalvm 폴더 안의 bin으로 이동한다
bin 폴더 내부를 살펴보면 java 명령어들이 있다. 여기서 java 명령어를 사용할 수 있다.

 

만약 어디서든 실행하고자 한다면 이 디렉토리를 HOME 환경 변수로 설정을 해주면 가능하다.

export PATH=$PATH:<추가경로>
export PATH=$PATH:/home/ubuntu/graalvm-jdk-17.0.10+11.1/bin

홈으로 돌아가 실행해봐도 java-version이 실행된다

 

+ export 명령을 .bashrc의 마지막 줄에 추가하면 서버에 접속하면서 Shell의 PATH 변수에 해당 경로가 포함된 채로 할당되어서 언제든지 사용할 수 있게 된다! 

 

+ which java : 어느 자바를 실행하는지~~? 알려줘

 

 

오예~

 

728x90

'Programming > etc' 카테고리의 다른 글

면접 DB, 네트워크  (0) 2024.03.30
면접 자바 질문  (0) 2024.03.30
DevOps  (0) 2024.03.19
Toss Payments API 적용기 (결제승인, 결제조회, 결제취소)  (4) 2024.02.21
[API] 토스 페이먼츠  (0) 2024.02.20

BELATED ARTICLES

more