비전공자의 비밀노트 - 비비
로그인
비전공자의 비밀노트 - 비비
로그인
리눅스 기본 사용법
YunGyu Choi
·
2023년 1월 25일
팔로우
0
docker
linux
0
리눅스 기본 사용법
리눅스와 파일
모든 것은 파일이라는 철학을 따른다.
모든 상호작용은 파일을 읽고, 쓰는 것 처럼 이루어져 있다.
마우스, 키보드와 같은 하드웨어도 파일이라고 생각하고 처리한다.
파일 네임 스페이스
전역 네임 스페이스 사용 : 전체 파일이 root ➡️ / 디렉토리 안래 있다.
쉘 종류
쉘(shell) : 사용자와 컴퓨터 또는 운영체제간의 인터페이스
사용자의 명령을 해석해서 커널에 명령을 요청해준다.
관련된 시스템 콜을 사용해서 프로그래밍이 작성되어 있다.
Bourne-Again Shell(bash) : Linux에서 쓴다.
Bourne Shell(sh) : Docker에서 쓴다.
Korn Shell(ksh) : Unix에서 쓴다.
(zsh) : macOS에서 쓴다.
리눅스 기본 명령어 정리
clear
: 앞단에 보이는 것을 깔끔하게 정리하기
whoami
: 자기 아이디 조회하기
sudo <명령>
: 관리자 권한으로 명령 실행하기
root가 슈퍼관리자ID이지만 슈퍼관리자로 사용하지 않는다.
리눅스는 한대의 컴퓨터에 여러명이 접속해서 쓰는 건데 루트계정으로 접속해서 작업하다가 실수하면 회복하기 어렵기 때문이다.
sudo apt-get update : 패키지 업데이트
pwd
: 현재 디렉토리 위치 조회하기
cd
: 디렉토리 바꾸기
ls
: 현재 디렉토리 내 파일목록 조회하기
ls -al : 숨김 파일까지 조회하기
리눅스는 파일마다 소유자/소유자그룹/모든사용자에 대해
읽고(r), 쓰고(w), 실행(x)하는 권한을 나누어서 관리한다.
chmod <3자리> <3자리> <3자리> 파일or폴더명
: 파일 권한 변경
3개의 권한을 2진수로 계산해서 8진수로 표현한다.
rwxrwxrwx = 777
r-xr-xr-x = 555
r-------- = 400
cat <파일명>
: 파일보기
rm <파일or폴더명>
: 파일 및 폴더 삭제하기
-r옵션 : 하위 디렉토리를 포함한 모든 파일 삭제하기
-f옵션 : 강제로 파일이나 디렉토리 삭제하기
(-rf로 한꺼번에 같이 옵션 줄수도 있다.)
❗️리눅스에는 휴지통이 없으니 신중하게 지워야한다.
grep
[-옵션] [패턴] [파일or폴더명]
<옵션>
i : 영문의 대문자를 구별하지 않는다.
v : 패턴을 포함하지 않는 라인을 출력한다
n : 검색 결과의 각 행의 선두에 행 번호를 넣는다
l : 파일명만 출력한다.
c : 패턴과 일치하는 라인의 개수만 출력한다.
r : 하위 디렉토리까지 검색한다.
리다이렉션과 파이프
표준 입출력(Standard Stream)
command로 실행되는 프로세스는 세가지 스트림을 가지고 있다.
stdin
: 표준 입력 스트립
stdout
: 표준 출력 스트림
stderr
: 오류 출력 스트림
모든 스트림은 일반적인 plain text로 console에 출력하도록 되어 있다.
리다이렉션
표준 스트림 흐름을 바꿔줄 수 있다.
>, <를 사용한다.
주로 명령어 표준 출력을 화면이 아닌 파일에 쓸 때 사용한다.
기존 파일에 추가는 >> 또는 <<를 사용한다.
예시) ls >> files.txt
기존에 있는 파일 끝에 ls출력 결과를 추가
도커를 실행하고 나서 특정 결과를 파일에 저장할 때 사용한다.
파이프
두 프로세스 사이에서 한 프로세스의 출력 스트림을 또 다른 프로세스의 입력 스트림으로 사용할 때 사용한다.
|을 사용해서 많이 사용한다.
프로세스 관리
프로세스 vs 바이러니
코드이미지 또는 바이너리 ➡️ 실행파일
실행중인 프로그램 ➡️ 프로세스
가상 메모리 및 물리 메모리 정보
시스템 리소스 관련 정보
스케쥴링 단위
리눅스 모체인 유닉스의 철학이 여러 프로그램이 서로 유기적으로 각자의 일을 수행하면서 전체 시스템이 동작하는 것이기 때문에 리눅스는 기본적으로 다양한 프로세스가 실행된다.
프론트 그라운드 vs 백 그라운드
프론트 그라운드 프로세서
쉘에서 해당 프로세스 실행을 명령한 후, 해당 프로세스 수행 종료까지 사용자가 다른 입력을 하지 못하는 프로세스
(해당 프로세스 작업 취소 :
ctrl + c
)
백 그라운드 프로세서
사용자 입력과 상관없이 실행되는 프로세스
프로세스 상태 확인 -ps 명령어
사용법 :
ps [option(s)]
-a : 시스템을 사용하는 모든 사용자의 프로세스 출력
(보통 aux와 같이 u, x 옵션과 함께 사용)
-u : 프로세스 소유자에 대한 상세 정보 출력
-l : 프로세스 관련 상세 정보 출력
-x : 터미널에 로그인한 후 실행한 프로세스가 아닌 프로세스들로 주로 데몬 프로세스(24시간 돌아가는 프로세스)까지 확인하기 위해 사용
(본래 ps명령은 현제 쉘에서 실행한 프로세스들만 보여주기 때문에 이 옵션을 사용하는 경우가 많음)
-e : 해당 프로세스와 관련된 환경변수 정보도 함께 출력
-f : 프로세스 간 관계 정보도 출력
주요 -ps 명령어 출력 항목
USER : 프로세스를 실행시킨 사용자 ID
PID : 프로세스 ID
%CPU : 마지막 1분 동안 프로세스가 사용한 CPU시간의 백분율
%MEM : 마지막 1분 동안 프로세스가 사용한 메모리 백분율
VSZ : 프로세스가 사용하는 가상 메모리 크기
RSS : 프로세스에서 사용하는 실제 메모리 크기
STAT : 프로세스 상태
START : 프로세스가 시작된 시간
TIME : 현재까지 사용된 CPU 시간(분:초)
COMMAND : 명령어
프로세스 중지시키기
kill %작업번호
kill 프로세스ID
작업강제옵션
-9
예시) # find/ -name '*.py'> list.txt &
[1] 57
# kill -9 57
주로 사용하는 프로세스 명령
ps aux|grep 프로세스명
: 프로세스가 실행중인지를 확인하고, 관련 프로세스에 대한 정보 출력
kill -9 프로세스ID
: 해당 프로세스를 강제로 죽임
명령&
: 터미널에서 다른 작업을 해야하거나, 프로세스 실행에 오랜 시간이 걸릴 경우 백그라운드로 실행
ctrl + c
: 프로세스 종료(실행 취소)
하드링크와 소프트링크
파일 복사 :
cp A B
1MB 사이즈를 가지고 있는 A파일을 B파일로 복사
(A와 B는 내용은 같지만 다른 파일을 가리킨다.)
폴더 복사 :
cp -fr * 폴더명
하드 링크 :
In A B
A와 B는 다른 이름이지만 동일한 파일을 가리킨다.
즉, 동일한 파일을 가진 이름을 하나 더 만드는 것
(전체 파일 용량은 달라지지 않음)
소프트 링크(심볼릭 링크) :
In-s A B
WindowOS의 바로가기와 비슷
(원래 파일에 비해 작은 용량)
ls -al하면, 소프트링크 확인 가능
rm A로 A를 삭제하면 B는 해당 파일에 접근 불가능
우분투 패키지 관리
데미안 계열
배포판 마다 명령어 차이 존재
ubuntu 패키지 관리 실무
ubuntu 패키지 인덱스 정보 업데이트
sudo apt-get update
설치된 ubuntu 패키지 업그레이드(함부로x)
sudo apt-get upgrade
패키지 설치
sudo apt-get install [패키지명]
패키지 삭제(설정파일 제외)
sudo apt-get remove [패키지명]
패키시 작세2(설정파일 포함)
sudo apt-get --purge remove [패키지명]
ubuntu 20.04에서 docker설치
최신 패키지 리스트 업데이트
sudo apt update
docker 다운로드를 위해 필요한 https 관련 패키지 설치
sudo apt install apt-transport-https ca-certificates curl software-properties-common
docker repository 접근을 위한 GPG key 설정
curl -fsSL
https://download.docker.com/linux/ubuntu/gpg
| sudo apt-key add -
docker repository 등록
sudo add-apt-repository "deb [arch=amd64]
http://download.docker.com/linux/ubuntu
focal stable"
등록한 docker repository까지 포함하여 최신 패키지 리스트 업데이트
sudo apt update
docker 설치
sudo apt install docker-ce
docker 실행 중임을 확인
sudo systemctl status docker
sudo 명령 없이 docker 명령어 사용하기 설정
현사용자 ID를 docker group에 포함
sudo usermod -aG docker ${USER}
터미널 끊고, 다시 ssh로 터미널 접속(로그인 다시하는 것)
현 ID가 docker group에 포함되어 있는지 확인하는 명령
id -nG
이제 sudo 없이 docker 명령을 바로 내릴 수 있음
docker
ubuntu 20.04에서 docker-compose설치
release page에서 최신 버전 확인 후, 다음 링크에서 버전 (1.28.2)변경
sudo curl -L "
https://github.com/docker/compose/releases/download/1.28.2/docker-compose-$(uname
-s)-$(uname -m)" -o /usr/local/bin/docker-compose
실행 권한 주기
sudo chmod +x /usr/local/bin/docker-compose
다음 명령 실행시 버전 확인이 가능하면, 성공
docker-compose --version
참조
https://www.youtube.com/watch?v=j_XtWCD1u9k
YunGyu Choi
velog에는 이론을 주로 정리하고, 코드와 관련된 것은 Git-hub로 관리하고 있어요. 포트폴리오는 링크된 Yun Lab 홈페이지를 참고해주시면 감사하겠습니다!
팔로우
이전 포스트
3과목 데이터 입출력 구현
다음 포스트
인코딩과 스케일링
0개의 댓글
댓글 작성