Cloud

도커를 위한 리눅스 쉘 사용법 | 1편

백엔드 개발자 - 젤리곰 2024. 3. 12. 11:14
728x90

1. 리눅스

높은 안정성강력한 보안 기능을 제공하여, 지속적인 서비스 운영과 데이터 보호가 중요한 웹서버 환경에 적합하다.

다양한 개발 도구와 소프트웨어를 지원하며, 가상화 및 컨테이너화(예: Docker)와 잘 통합되어 현대적인 애플리케이션 배포에 이상적이다.

 

2. 쉘

사용자와 하드웨어 또는 운영체제 간 인터페이스 (사용자의 명령을 해석에서 커널에 명령을 요청해주는 역할)

리눅스에서 쉘은 사용자가 시스템과 상호 작용하고, 스크립트를 통해 작업을 자동화하는 중요한 도구로 활용됩니다.

리눅스의 대표적인 쉘은 bash다.

 

3. 리눅스 명령어

✔️whoami

로그인한 사용자ID를 알려줌

 

✔️ root

슈퍼관리자 아이디

--> 슈퍼관리자로 로그인하여 사용하는건 권장하지 않는다.

어떤 명령을 하더라도 바로 실행되고 복구되지 않을 가능성이 높다.

 

✔️ sudo

root 계정으로 로그인 하지 않았어도 root 권한이 필요한 명령을 실행할 수 있도록 한다.

 

✔️ pwd

현재 접속되어있는 폴더가 어디인지 확인

 

✔️ cd..

상위 디렉토리로 이동

 

✔️ ls

파일 목록 출력

-al 을 붙이면 숨김 파일도 볼 수 있다.

숨김파일은 파일명앞에 .이 붙는다.

✔️ chmod

파일 권한 변경

 

ex1 ) chmod 755 파일명 

-소유자에게 r,w,x 권한 / 그룹에게 r,x권한 / 기타 사용자에게 r,x권한으로 변경

ex2 ) chmod -R 777 doc

- docs라는 디렉터리와 docs 하위디렉토리에 대해 모든 권한을 허용하도록 한번에 바꾼다.

 

✔️ cat

파일 내용 출력

 

✔️ rm

파일 및 폴더 삭제

- r옵션: 하위 디렉토리 포함한 모든 파일 삭제

- f 옵션: 강제로 파일이나 디렉토리 삭제

※복구하기 까다로우니 신중하게 써야하는 명령어다.

 

 

4. 리다이렉션과 파이프

Standard Stream에는 세가지가 있다.

표준 입력 스트림 stdin

표준 출력 스트림 stdout

오류 출력 스트림 stderr

 

✔️리다이렉션

: Linux에서 입력 또는 출력을 파일이나 다른 프로그램으로 변경하는 방법.

(표준스트림의 흐름을 바꿔줄 수 있다.)

 

echo "Hello, World!" > hello.txt

#이 명령은 "Hello, World!" 문자열을 hello.txt 파일에 저장합니다. 
#만약 파일이 이미 존재한다면, 내용을 덮어씁니다.

echo "Another line." >> hello.txt

# "Another line." 문자열을 hello.txt 파일의 끝에 추가합니다.

wc -l < hello.txt

#hello.txt 파일의 줄 수를 세어 출력합니다. 
#여기서 wc -l 명령은 줄 수를 세는 명령입니다.

 

✔️ 파이프

: Linux에서 한 프로그램의 출력을 다른 프로그램의 입력으로 전달하는 데 사용.

cat file.txt | grep "search term"
#이 명령은 file.txt의 내용을 cat으로 출력하고, 
#그 출력을 grep 명령에 파이프하여 "search term"이 포함된 줄만 필터링합니다.

ls | wc -l
#이 명령은 현재 디렉토리의 파일 리스트를 ls로 출력하고, 
#그 출력을 wc -l 명령에 파이프하여 파일의 총 수를 세어 출력합니다.

cat access.log | cut -d ' ' -f 1 | sort | uniq
#이 명령은 access.log 파일의 내용을 출력하고, 
#cut -d ' ' -f 1으로 각 줄의 첫 번째 필드(공백으로 구분)를 추출하여 IP 주소를 가져온 다음, 
#sort로 정렬하고 
#uniq로 중복을 제거하여 고유한 IP 주소 목록을 생성합니다.

 

5. 프로세스 관리

✔️foreground process

사용자가 터미널에서 명령을 실행할 때 기본적으로 시작되는 방식이다.

명령 수행이 완료될 때까지, 다른 명령을 입력하지 못한다.

 

✔️background process

사용자가 터미널에서 다른 작업을 계속할 수 있다.

백그라운드 프로세스를 실행하기 위해, 명령어 맨 뒤에 &를 붙여준다.

 

✔️프로세스 상태확인

ps

  • e: 모든 프로세스를 보여줍니다.
  • f: 풀 포맷으로 보여줍니다. 프로세스 간의 관계(부모 프로세스 등)를 포함한 상세한 정보를 표시합니다.
  • a: 모든 사용자의 프로세스를 보여줍니다. 
  • u: 사용자별 프로세스 상세 정보를 함께 보여줍니다.
  • x: 일반적으로 터미널에 연결되지 않은 모든 프로세스를 보여줍니다. 주로 데몬 프로세스까지 확인하기 위해 사용.
  • j: 프로세스의 작업(job) 관리 정보를 보여줍니다.

✔️프로세스 중지시키기

kill [PID]

ps aux | greb 프로세스명
#이 명령어는 시스템에서 실행 중인 모든 '프로세스명'에 대한 정보를 출력한다.

 

 

✔️파일 복사

cp

cp -rf * 폴더명
#-r은 디렉토리와 그 안의 모든 내용(하위 디렉토리와 파일 포함)을 복사
#-f는 강제로 복사하는 옵션

 

 

6. 하드링크와 소프트링크

파일 시스템의 다른 위치에서 동일한 파일에 대한 참조를 제공하는 데 사용한다.

 

✔️하드링크

In A B

In a.txt b.txt
#a와 b 텍스트파일을 생성.

 

동일한 파일을 가진 이름을 하나 더 만든다.

A를 삭제해도 B는 남는다.

하지만, A를 수정하면 B도 수정된다.

 

💡활용

1) 여러 웹 애플리케이션이 공통의 설정 파일을 공유

2) 실제 데이터를 중복 저장하지 않고도 여러 경로를 통해 동일한 콘텐츠에 접근

 

✔️소프트링크

In -s A B

In -s b.txt c.txt

A를 삭제하면 B는 해당 파일 접근 불가하다.

A를 수정하면 B도 수정된다.

 

💡활용

1) 웹 애플리케이션의 다양한 버전을 관리

2) 웹서버 설정에서 특정 파일이나 디렉토리의 경로가 자주 변경되는 경우 유연하게 파일 경로를 관리할 수 있다.

(수동으로 변경하지 않고 소프트링크 대상만 변경함)

 

7. 우분투 패키지 관리

우분투(Ubuntu)는 데스크톱, 서버, 클라우드 환경에 널리 사용되는 리눅스 기반의 운영 체제.

 

#패키지 설치
sudo apt-get install 패키지명

#패키지 삭제
sudo apt-get remove 패키지명

 

 

8. VIM 에디터 사용법

설정파일을 수정해서 설정을 변경하기 위해 에디터 사용법을 알아야한다.

 

: - 명령모드

i - 입력모드

esc - 일반모드

x - 내용 삭제 (한 문자씩)

:q! - 강제 종료

:wq - 저장 후 종료

 

 

G - 가장 마지막 줄로 이동

gg - 첫번째 행으로 이동

111G - 111행으로 이동

$ - 행의 마지막으로 이동

^ -  행의 시작으로 이동

yy - 현재 위치한 행을 복사

p - 아래쪽에 붙여넣기

P - 윗줄에 붙여넣기

u - 직전 상황으로 돌아간다.

dd - 한줄 삭제

o - 한 줄 추가

/: 검색 ( n 다음 키워드로 이동 )

 

 

728x90