리눅스 시스템 및 네트워크

soobeen-jeong·2022년 11월 17일
0

작업예약

at 예약한 명령을 정해진 시간에실행
atq 현재 사용자의 등록된 작업 목록 출력
atrm 지정된 작업 번호 작업을 삭제


crontab(스케줄링 배치)

정해진 시간에 반복 실행
crond (daemon process)에 의해 crontab 파일 내용을 참조하여 자동으로 정해진 작업 수행

crontab 파일 위치 : /var/spool/cron

crontab [옵션] <파일명>
crontab 파일 편집 명령
crontab 파일 초기 내용은 주석(comment, #으로 시작)으로만 구성
-e : crontab 파일 편집
-l : crontab 내용 출력
-r : crontab 파일 삭제

crontab -e: crontab 생성하고 편집
crontab 편집기로는 기본적으로 VISUAL 또는 EDITOR 환경 변수에 지정된 편집기를 사용

systemd 서비스

system 서비스의 역할
리눅스의 시스템과 서비스 관리자
유닉스의 init 프로세스가 하던 작업을 대신 수행
다양한 서비스 데몬을 시작하고, 프로세스들의 상태를 유지하며, 시스템의 상태를 관리

init 프로세스와 런레벨
현재 init 서비스는 systemd 서비스로 대체
man init로 확인해보면 systemd에 대한 설명이 출력

런레벨: 시스템의 상태를 구분하는 숫자/문자

자주 사용하는 런레벨
3번 : multi-user.target -> CLI booting
5번 : graphical.target -> GUI booting

systemctl

systemd 서비스를 제어
systemd -a 상태와 관계없이 유닛 전체 출력
systemd -t 유닛 종류: 지정한 종류의 유닛만 출력

유닛 서비스 시작

sudo systemctl start cron

유닛의 상태 확인

systemctl status cron.service

유닛 서비스 정지

sudo systemctl stop cron

현재 target과 런레벨 확인

systemctl get-default

기본 target 지정

systemctl set-default <name of target>.target

데몬 프로세스

데몬
리눅스의 백그라운드에서 동작하며 특정한 서비스를 제공하는 프로세스

데몬의 동작방식
독자형 데몬
슈퍼데몬

pstree 명령 : 프로세스 계층 구조 확인

Linux 주요 데몬
sshd : 원격 접속 서비스 제공
httpd : 웹서비스 제공
ftpd : FTP 서비스 제공
nfs : 네트워크 파일 시스템
crond : 주기적으로 예약된 명령 실행 서비스
lpd : 프린트 서비스
ntpd : 시간 동기화 서비스

부트 로더

부트 로더
커널을 메모리에 로딩하는 역할을 수행
우분투에서는 GRUB를 기본으로 지원

/boot/grub/grub.cfg 파일
• GRUB2의 기본 설정 파일로 사용자가 직접 수정 불가
• /etc/default/grub 파일과 /etc/grub.d 디렉터리 아래에 있는 스크립트를 읽어서 자동 생성

/etc/grub.d 디렉터리
• GRUB 스크립트를 가지고 있는 디렉터리
• 이 스크립트들은 GRUB의 명령이 실행될 때 순서대로 실행되어 grub.cfg 파일을 생성

복구 모드로 부팅하기

  1. 복구 모드 선택
  • GRUB 메뉴 초기 화면에서 ‘Ubuntu용 고급 설정’을 선택
  • 메뉴가 출력되면 recovery mode를 선택
  1. 복구 메뉴 항목에서 root 항목 선택하기
  2. root 항목을 선택하면 바로 root 프롬프트가 출력됨
  3. 읽기/쓰기 모드로 다시 마운트하기
  4. 복구 작업 수행 후 재시작하기
    : reboot -f

마운트

마운트(mount)
파일 시스템을 디렉터리 계층 구조의 특정 디렉터리와 연결하는 것
파일 시스템이 디렉터리 계층 구조와 연결되지 않으면 사용자가 해당 파일 시스템에 접근할 수 없음

파일 시스템 마운트 설정 파일: /etc/fstab
파일 시스템의 마운트 설정 정보 wjwkd
부팅시 이 파일을 읽고 파일 시스템 마운트

➊ 장치명: UUID=265c8913-ee1e-4034-885f-207969b0a23b
(UUID: 파일 시스템을 유일하게 구분해주는 128bit 숫자)
Universally Unique IDentifier 범용 고유 식별자
➋ 마운트 포인트: /
➌ 파일 시스템 종류: ext4
➍ 옵션: errors=remount-ro
➎ 덤프 관련 설정: 0 (0: dump 명령으로 덤프 안됨 1: 덤프 가능)
➏ 파일 점검 옵션: 1
(0: 부팅시 fsck명령으로 파일시스템 점검 안함,
1: 루트 파일시스템, 2: 루트 외 파일 시스템)

디스크 설치 및 관리

가상 머신에 디스크 추가


edit virtual machine settings 선택


hard disk 선택


SCSI 선택


create a new virtual disk 선택


1GB 입력


파일명 지정


디스크 추가 작업 완료

fdisk 디스크 파티션 생성, 삭제, 보기 등 파티션을 관리

sudo fdisk -l

파티션을 만든 후 파일 시스템을 생성해야함
mkfs 파일 시스템 생성 명령

sudo mkfs /dev/sdb1

mkfs 리눅스 개정판 확장 파일 시스템(ext2, ext3, ext4)을 만듦

mke2fs /dev/sdb1

LVM

Logical Volume Manager
Linux 저장공간을 효율적이고 유연하게 관리하기 위한 kernel 기능

LVM vs. 기존 방식
기존 방식 : 디스크 (저장장치 storage)를 파티셔닝한 후 OS 영역에 마운트하여 read/write 수행
-> 단점; 저장공간의 크기가 고정되어 증설/축소 어려움 -> 기존 방식의 단점 보완 위해 LVM 구성

LVM은 파티션 대신에 volume이라는 단위로 디스크(저장장치) 다룸

디스크 (저장장치)의 확장/변경에 유연, 크기 변경할 때 기존 데이터 이전 필요 X
LVM 장점
유연한 용량 조절
크기 조절을 위한 storage pool
편의에 따른 장치 이름 지정
disk striping, mirror volume 등 제공

LVM 구성

PV (Physical Volume)
물리적 볼륨, 실제 디스크 장치를 분할한 파티션된 상태
일정한 크기의 PE (Physical extent) 들로 구성

PE (Physical extent)
PV를 구성하는 일정한 크기 블록
보통 1 PE는 4 MB에 해당
PE와 LE는 1:1 대응

VG (Volume Group)
PV들이 모여서 생성되는 단위
사용자는 VG를 원하는 크기로 쪼개서 LV로 만들어 사용

LV (Logical Volume)
사용자가 최종적으로 사용하는 단위
VG에서 필요한 크기로 할당받아 LV 생성
최종적으로 mount하는 대상은 LV

LVM 생성과정

기존 파일 시스템 종류 변경 -> fdisk 명령
PV 생성 -> pvcreate
VG 생성 -> vgcreate
VG 활성화 -> vgchange -a y 명령
LV 생성 -> lvcreate
LV에 파일 시스템 생성 -> mkfs 명령
LV 마운트 -> mount 명령
LVM 적용을 위한 패키지 설치 필요
lvm2 : LVM 패키지
설치 명령어: sudo apt-get install lvm2
출처:https://velog.io/@peppie0192/%EA%B5%AC%EB%A6%84-k8s-TIL-1-3-2

df 파일 시스템별 디스크 사용량 확인
df -h
파일 시스템 사용량을 이해하기 쉬운 단위로 표시하기: - h
df -Th
파일 시스템의 종류 출력하기: -T

du 디렉토리나 사용자별 디스크 사용량 확인

fsck 파일 시스템 검사

우분투/스냅 패키지 설치

dpkg 명령

Debian 계열 패키지 관리 명령 : .deb 패키지 파일 설치/삭제/업그레이드/정보제공

dpkg [옵션] < .deb 파일명 또는 패키지명 >
-l : 설치된 패키지 목록 확인
-L <패키지명> : 해당 패키지로부터 설치된 모든 파일 목록 확인
-s <패키지명> : 해당 패키지 정보 확인
-I (대문자 i) < .deb 파일명> : 해당 .deb 파일 정보 확인
-i < .deb 파일명> : 패키지 설치/업그레이드, 관리자 권한
-r <패키지명> : 패키지 삭제 (설정 파일 삭제 X), 관리자 권한
-P <패키지명> : 패키지/설정 파일 삭제, 관리자 권한

apt 명령

Debian 계열 온라인 repository를 통한 패키지 관리 명령
Ubuntu 패키지 및 해당 패키지 정보를 관리하는 서버 정보는 /etc/apt/sources.list 파일에 저장
기본적으로 /etc/apt/sources.list에 등록된 서버로부터 원하는 패키지에 대한 검색/다운로드/설치 가능
만약 별도의 repository로부터 패키지를 설치하려면 해당 repository 서버 주소 등록 후 사용

apt-cache 명령
APT 캐시 (패키지 DB)에서 정보 검색; apt-cache [옵션] <서브 명령>

-f : 검색결과 전체정보 출력
서브 명령

serach 키워드 : 캐시에서 키워드 검색
show 패키지 : 패키지에 대한 정보 출력

apt-get 명령
패키지 관리 명령, 온라인 repository로부터 패키지 다운로드/설치/삭제/업그레이드 등의 관리 수행

[sudo] apt-get [옵션] <서브 명령>

-d : 패키지 다운로드

-y : 패키지 설치시 자동으로 yes 적용

서브 명령

update : repository의 새로운 패키지 정보 다운로드
upgrade : 현재 설치된 패키지 업그레이드
install <패키지> : 패키지 설치
remove <패키지> : 패키지 삭제 (설정파일 삭제 X)
purge <패키지> : 패키지 및 설정파일 삭제
autoremove : 불필요한 의존성 패키지 삭제

Linux booting 후 또는 패키지 설치전에 항상 sudo apt-get update 명령을 통해 새로운 패키지 정보 확보 후 필요한 패키지 설치

ssh 데몬 설치

sudo apt-get update
sudo apt-get install [-y] openssh-server
systemctl status sshd.service -> 서비스 실행유무 확인

SSH (Secure SHell)

22번 포트 사용
네트워크를 이용하여 원격으로 접속하는 서비스
=> Linux 사용시 일반적으로 SSH Client를 이용한 접속이 일반적
공개키 암호 방식으로 암호화된 데이터 송수신
원격 접속 대상(서버) Linux host에 SSH Daemon process (sshd, 부르는 용어 -> server program, daemon, service)가 동작중이어야 한다 -> client/server 구조
원격 접속 client는 SSH client 프로그램을 통해 접속
Windows : putty, xshell 등
Linux/MacOS : ssh 명령

별도의 공개키를 생성하여 client에 제공하고 접속하는 방식으로 사용가능

  • public cloud에서 제공하는 가상 컴퓨팅 서비스
  • IaC를 이용한 infrastructure 관리시에도 많이 사용
  • ssh-keygen 명령 사용

가상 PC 환경에서의 SSH 접속환경 구축방법

  • NAT 환경에 포트 포워딩 기능 사용
    Virtualbox -> Linux image -> 네트워크 -> 고급 -> 포트포워딩 설정
    ssh client 사용시 : host ip 127.0.0.1 (loopback) / host port : 22
    NAT 네트워크 구성 : 별도 네트워크 구성시 유리 (가상 PC 네트워크 구성)
    호스트 어댑터 이용 -> SSH server ip로 접속

스냅 패키지 관리

스냅 개념
Ubuntu에 새로 도입한 패키지 형식의 샌드박스 형태 패키지 (완전히 격리된 형태)
패키지를 만들 때 프로그램이 사용하는 모든 라이브러리를 패키지 안에 포함

장점
개발자가 다른 패키지나 라이브러리 의존성을 고려하지 않고 개발
기존 시스템과 격리되어 실행하는 샌드박스 형식으로 보안 강화

단점
큰 패키지 용량

snap 명령

snap이 별도로 설치되지 않은 경우 설치 후 사용 -> sudo apt-get install snap
snap [옵션] 명령

install 스냅명 : 지정한 스냅 설치, 관리자 권한
list : 설치한 스냅 목록 출력
remove 스냅명 : 지정한 스냅 삭제, 관리자 권한
info 스냅명 : 지정한 스냅 상세 정보 출력
find 스냅명 : 지정한 스냅 검색

파일 아카이브

아카이브 (Archive)

  • 여러 개의 지정된 파일들을 아카이브(묶음)로 만듭니다.
  • 아카이브 파일에는 확장자 .tar을 붙입니다.
  • 파일의 용량은 줄어들지 않습니다. (압축 X 묶음 O)
  • 원본 파일은 그대로 유지됩니다.

tar (Taple ARchive) [옵션][만들 파일 이름].tar [묶을 파일1] ... [묶을 파일 N]
→ [옵션]

c 아카이브 생성
x 아카이브 해제
v 진행과정 출력
f .tar 파일을 지정
r 파일 추가
t 아카이브 내용 확인
※ vf는 고정한다고 생각하면 됩니다.

아카이브 생성하기 ( cvf )


아카이브 파일 내용 확인하기 ( tvf )

아카이브 해제하기 ( xvf )

아카이브 파일에 새로운 파일 추가하기 ( rvf )

소프트웨어 컴파일


네트워크 기초

주소

컴퓨터의 주소: MAC 주소, IP 주소, 호스트명

MAC 주소

하드웨어를 위한 주소
이더넷 주소, 하드웨어 주소, 물리 주소라고도 함
MAC 주소는 네트워크 인터페이스 카드(랜 카드)에 저장된 주소로 기본적으로 네트워크 인터
페이스 카드가 만들어질 때 부여
MAC 주소는 각 하드웨어를 구별하는 역할을 수행
MAC 주소는 : 이나 - 으로 구분되는 여섯 개의 16진수로 구성되며 총 48bit
• 앞의 세 자리는 제조사 번호이고 뒤의 세 자리는 일련번호
• 제조사 번호는 국제 표준 기구 중 하나인 IEEE에서 지정

IP 주소

인터넷으로 연결된 네트워크에서 각 컴퓨터를 구분하기 위해 사용
IP 주소는 1바이트 크기의 숫자 네 개로 구성되므로 총 4바이트
TCP/IP 프로토콜의 3~5계층은 IP 주소를 사용
IP주소는 네트워크를 구분하는 네트워크 주소 부분과, 해당 네트워크 안에서 특정 컴퓨터를
식별하는 호스트 주소 부분
IP 주소는 총 32bit(4B) 중 몇 비트를 네트워크 부분으로 사용하고 나머지 몇 비트를 호스트
부분으로 사용하는지에 따라 A 클래스, B 클래스, C 클래스로 구분
C 클래스는 앞의 3바이트가 네트워크 부분이고 뒤의 1바이트만 호스트 부분
• 호스트 부분으로 사용할 수 있는 숫자는 0~255인데, 0은 네트워크 주소를 나타내는 데 사용하고 255
는 브로드캐스트 주소로 사용하므로 1~254를 호스트 주소로 할당
IPv6(IP 버전 6)는 fe80::250:56ff:fe3e:3cfe와 같이 16진수로 표기하며 128bit 크기

넷마스크와 브로드캐스트 주소

넷마스크: IP 주소에서 네트워크 부분을 알려주는 역할
브로드캐스트 주소: 같은 네트워크에 있는 모든 컴퓨터에 메시지를 보낼 때 사용
• 호스트 부분을 모두 1로 설정
• 예: IP 주소에서 네트워크 부분이 192.168.100.0이면 브로드캐스트 주소는 192.168.100.255

호스트 이름

컴퓨터에 붙이는 이름
호스트 이름도 IP 주소처럼 네트워크 부분과 호스트 이름 두 부분으로 구성
예: www.naver.com, 호스트 부분(www), 네트워크 부분(naver.com)
포트 번호
서버에서 제공하는 각 서비스를 구분하는 번호(예: 웹 - 80)
/etc/services 파일에 서비스 포트번호 저장

포트 번호

서버에서 제공하는 각 서비스를 구분하는 번호(예: 웹 - 80)
/etc/services 파일에 서비스 포트번호 저장

네트워크 설정

네트워크 관리자 설치

sudo apt install network-manager

네트워크 전체 상태 살펴보기

nmcli general status
nmcli gen

네트워크 장치의 정보보기

ip addr show

기본 게이트웨이 주소 설정하기

sudo ip route add default via 192.168.1.1 dev ens33

라우팅 경로 설정하기

sudo ip route add 192.168.2.0/24 via 192.168.147.2 dev ens33

라우팅 경로 삭제하기

sudo ip route del 192.168.2.0/24

우분투에서 ifconfig 명령 사용하려면 net-tool 패키지 필요

sudo apt install net-tools

현재 설치된 네트워크 인터페이스 설정 보기

ifconfig

특정 네트워크 인터페이스 설정 보기

ifconfig ens33

라우팅 테이블 보기

route

호스트 이름 설정

호스트 이름 출력

uname -n

호스트의 모든 정보 출력

uname -a

호스트 이름 출력 및 설정

hostname
nmcli gen host
sudo hostname myubuntu

호스트 이름 검색 및 설정하기

sudo hostnamectl set-hostname myubuntu
hostnamectl

네트워크 상태 확인

ping

네트워크 장비에 신호를 보냄
옵션
-a: 통신이 되면 소리를 낸다.
-q: 테스트
-c 개수: 보낼 패킷 수를 지정한다.

netstat

네트워크 상태 정보를 출력
옵션
-a: 모든 소켓 정보를 출력
-r: 라우팅 정보를 출력
-n: 호스트명 대신 IP 주소로 출력
-i: 모든 네트워크 인터페이스 정보를 출력
-s: 프로토콜별로 네트워크 통계 정보를 출력
-p: 해당 소켓과 관련된 프로세스의 이름과 PID를 출력

arp

arp 캐시 정보를 관리
업로드중..

0개의 댓글