네이버 부스트캠프 학습 정리/8주차

[AI 서비스 기초] Linux

AI쟁이J 2023. 4. 29. 20:14

Linux?

서버에서 자주 사용하는 OS이며 여러 버전이 존재한다.

또한 안전성, 신뢰성이 높으며 쉘 커맨드, 쉘 스크립트를 통한 작업이 가능하다.

CLI를 사용한다.

 

CLI

Command-Line Interface로 글자를 입력하여 컴퓨터에 명령을 내리는 방식.

 

Shell Command

서버에서 접속해 사용할 때, Linux의 내장 기능을 활용하거나 데이터 전처리, Docker사용 등 여러 상황에서 shell command를 사용한다.

가장 유명한 shell commands

ls

list files and directories : 어떤 파일이나 폴더가 존재하는지 알 수 있다.

ls 사용 : 현재 폴더 기준으로 실행, 폴더를 작성하면 폴더 기준으로 실행

-a : .으로 시작하는 파일, 폴더를 포함한 전체를 출력

-l : 퍼미션, 소유자, 만든 날짜, 용량까지 출력

-h: 용량을 사람이 읽기 쉽도록 GB, MB등으로 표현

 

cd

change directory : working directory를 바꿀 때 사용

cd ~ : Home으로 이동

 

rm

파일 제거 기능

 

echo

Python의 print 처럼 터미널에 텍스트를 출력함

 

cp

cp vi-test.sh vi-test2.sh 와 같이 파일 또는 폴더를 복사함.

-r : 디렉토리를 복사할 때 디렉토리 안에 파일이 있으면 재귀적으로 모두 복사

-f : 복사할 때 강제로 실행

 

vi

vim 편집기로 파일 생성 -Insert 모드에서만 수정 가능

ESC를 누른 후 :wq (저장하고 나가기)

ESC : wq ! : 강제 저장하고 나가기

ESC : q: 그냥 나가기

 

mv

파일, 폴더 이동하기 

 

cat

특정 파일 내용 출력 : concatenate

여러 파일을 인자로 주면 합쳐서 출력

파일에 저장하고 싶은 경우 (overwrite)

ex) cat vi-test2.sh vi-test3.sh > new_test.sh

파일에 추가하고 싶은 경우 (append)

ex) cat vi-test2.sh vi-test3.sh >> new_test.sh

 

clear

터미널 창을 정리함

 

find

파일 및 디렉토리를 검색할 때 사용

find . -name "File" : 현재 폴더에서 File이란 이름을 가지는 파일 및 디렉토리를 검색

 

export

export로 환경 변수 설정

export water="물"

echo $water (실행)

> export water = "물"

export로 설정한 환경 변수는 터미널이 꺼지면 사라짐.

 

alias

터미널에서 alias를 치면 현재 별칭으로 설정된 것을 볼 수 있음.

 

tree

폴더의 하위 구조를 계층적으로 표현함.

 

head, tail

파일의 앞/뒤 n행 출력

 

sort

행 단위 정렬 

-r : 정렬을 내림차순으로 정렬

-n : Numeric sort

 

uniq

중복된 행이 연속으로 있는 경우 중복 제거

-c : 중복 행의 개수 출력

 

grep

파일에 주어진 패턴 목록과 매칭되는 라인 검색

-i : Insensitively하게, 대소문자 구분 x

-w : 정확히 그 단어만 찾기

-v : 특정 패턴 제외한 결과 출력

-E : 정규 표현식 사용

 

cut

파일에서 특정 필드 추출

-f : 잘라낼 필드 지정

-d : 필드를 구분하는 구분자.

 

Redirection & pipe (표준 스트림) 

Unix에서 동작하는 프로그램은 커맨드 실행시 3개의 stream이 생성된다.

stdin : 0으로 표현, 입력

stdout : 1로 표현, 출력 값 (터미널에)

stderr : 2로 표현, 디버깅 정보나 에러 출력

 

Redirection : 프로그램의 출력을 다른 파일이나 스트림으로 전달

> : 덮어쓰기 (Overwrite)

>> : 맨 아래에 추가하기 (Append)

ex)

echo "hi" > vi-test3.sh

echo "hello" >> vi-test3.sh

 

Pipe : 프로그램의 출력(stdout)을 다른 프로그램의 입력으로 사용하고 싶은 경우

A의 output을 B의 input으로 사용

현재 폴더에 있는 파일명 중 vi가 들어간 단어를 찾고 싶은 경우

ls | grep "vi"

위 결과를 다시 output.txt에 저장하는 경우

ls | grep "vi" > output.txt

 

서버에서 자주 사용하는 쉘 커맨드

ps

현재 실행중인 프로세스 출력하기

-e : 모든 프로세스

-f : Full Format으로 자세히 보여줌

 

curl

Command Line 기반의 Data Transfer 커맨드 : Client URL

Request를 테스트할 수 있는 명령어

웹 서버를 작성한 후 요청이 제대로 실행되는지 확인 가능

 

df

현재 사용중인 디스크 용량 확인 : Disk Free

-h : 사람이 읽기 쉬운 형태로 출력

 

scp

SSH를 이용해 네트워크로 연결된 호스트 간 파일을 주고 받는 명령어

-r : 재귀적 복사

-P : ssh포트 지정

-i : SSH설정을 활용해 실행

local > remote

remote > remote

remote > local

 

nohup

터미널 종료 후에도 계속 작업을 유지하도록 실행

nohup python3 app.py &

실행될 파일이 Permission 755여야함.

종료는 ps ef | grep app.py 후, pid를 찾은 후 kill -9 pid로 프로세스를 Kill 해야함

nohup.out에 로그가 저장됌

 

chmod

파일의 권한을 변경하는 경우 사용 

Permission

r = Read (4)

w = Write (2)

x = eXecute (실행하기, 1)

755 퍼미션은

r + w + x = 4 + 2 + 1 = 7,

r + x = 4 + 1 = 5

이런 방식으로 r, w, x에 대한 권한을 의미.