Linux 개요
드디어 나의 리눅스 티셔츠를 자랑할 날이 왔다~ ㅋㅎㅋㅎ
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 <대상파일> <어디로 복사할지>
- 파일 삭제 : rm
- 없는 파일은 삭제 불가
- rm -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
> esc를 누르면 normal 모드가 된다
이때 변경사항이 있는데 그냥 :q를 해버리면 실패한다. ! 추가하면 변경사항 폐기
: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
만약 어디서든 실행하고자 한다면 이 디렉토리를 HOME 환경 변수로 설정을 해주면 가능하다.
export PATH=$PATH:<추가경로>
export PATH=$PATH:/home/ubuntu/graalvm-jdk-17.0.10+11.1/bin
+ export 명령을 .bashrc의 마지막 줄에 추가하면 서버에 접속하면서 Shell의 PATH 변수에 해당 경로가 포함된 채로 할당되어서 언제든지 사용할 수 있게 된다!
+ which java : 어느 자바를 실행하는지~~? 알려줘
오예~
'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 |