at 예약한 명령을 정해진 시간에실행
atq 현재 사용자의 등록된 작업 목록 출력
atrm 지정된 작업 번호 작업을 삭제
정해진 시간에 반복 실행
crond (daemon process)에 의해 crontab 파일 내용을 참조하여 자동으로 정해진 작업 수행
crontab 파일 위치 : /var/spool/cron
crontab [옵션] <파일명>
crontab 파일 편집 명령
crontab 파일 초기 내용은 주석(comment, #으로 시작)으로만 구성
-e : crontab 파일 편집
-l : crontab 내용 출력
-r : crontab 파일 삭제
crontab -e: crontab 생성하고 편집
crontab 편집기로는 기본적으로 VISUAL 또는 EDITOR 환경 변수에 지정된 편집기를 사용
system 서비스의 역할
리눅스의 시스템과 서비스 관리자
유닉스의 init 프로세스가 하던 작업을 대신 수행
다양한 서비스 데몬을 시작하고, 프로세스들의 상태를 유지하며, 시스템의 상태를 관리
init 프로세스와 런레벨
현재 init 서비스는 systemd 서비스로 대체
man init로 확인해보면 systemd에 대한 설명이 출력
런레벨: 시스템의 상태를 구분하는 숫자/문자
자주 사용하는 런레벨
3번 : multi-user.target -> CLI booting
5번 : graphical.target -> GUI booting
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 파일을 생성
마운트(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
Logical Volume Manager
Linux 저장공간을 효율적이고 유연하게 관리하기 위한 kernel 기능
LVM vs. 기존 방식
기존 방식 : 디스크 (저장장치 storage)를 파티셔닝한 후 OS 영역에 마운트하여 read/write 수행
-> 단점; 저장공간의 크기가 고정되어 증설/축소 어려움 -> 기존 방식의 단점 보완 위해 LVM 구성
LVM은 파티션 대신에 volume이라는 단위로 디스크(저장장치) 다룸
디스크 (저장장치)의 확장/변경에 유연, 크기 변경할 때 기존 데이터 이전 필요 X
LVM 장점
유연한 용량 조절
크기 조절을 위한 storage pool
편의에 따른 장치 이름 지정
disk striping, mirror volume 등 제공
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
기존 파일 시스템 종류 변경 -> 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 파일 시스템 검사
Debian 계열 패키지 관리 명령 : .deb 패키지 파일 설치/삭제/업그레이드/정보제공
dpkg [옵션] < .deb 파일명 또는 패키지명 >
-l : 설치된 패키지 목록 확인
-L <패키지명> : 해당 패키지로부터 설치된 모든 파일 목록 확인
-s <패키지명> : 해당 패키지 정보 확인
-I (대문자 i) < .deb 파일명> : 해당 .deb 파일 정보 확인
-i < .deb 파일명> : 패키지 설치/업그레이드, 관리자 권한
-r <패키지명> : 패키지 삭제 (설정 파일 삭제 X), 관리자 권한
-P <패키지명> : 패키지/설정 파일 삭제, 관리자 권한
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 -> 서비스 실행유무 확인
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에 제공하고 접속하는 방식으로 사용가능
가상 PC 환경에서의 SSH 접속환경 구축방법
스냅 개념
Ubuntu에 새로 도입한 패키지 형식의 샌드박스 형태 패키지 (완전히 격리된 형태)
패키지를 만들 때 프로그램이 사용하는 모든 라이브러리를 패키지 안에 포함
장점
개발자가 다른 패키지나 라이브러리 의존성을 고려하지 않고 개발
기존 시스템과 격리되어 실행하는 샌드박스 형식으로 보안 강화
단점
큰 패키지 용량
snap이 별도로 설치되지 않은 경우 설치 후 사용 -> sudo apt-get install snap
snap [옵션] 명령
install 스냅명 : 지정한 스냅 설치, 관리자 권한
list : 설치한 스냅 목록 출력
remove 스냅명 : 지정한 스냅 삭제, 관리자 권한
info 스냅명 : 지정한 스냅 상세 정보 출력
find 스냅명 : 지정한 스냅 검색
아카이브 (Archive)
tar (Taple ARchive) [옵션][만들 파일 이름].tar [묶을 파일1] ... [묶을 파일 N]
→ [옵션]
c 아카이브 생성
x 아카이브 해제
v 진행과정 출력
f .tar 파일을 지정
r 파일 추가
t 아카이브 내용 확인
※ vf는 고정한다고 생각하면 됩니다.
아카이브 생성하기 ( cvf )
아카이브 파일 내용 확인하기 ( tvf )
아카이브 해제하기 ( xvf )
아카이브 파일에 새로운 파일 추가하기 ( rvf )
컴퓨터의 주소: MAC 주소, IP 주소, 호스트명
하드웨어를 위한 주소
이더넷 주소, 하드웨어 주소, 물리 주소라고도 함
MAC 주소는 네트워크 인터페이스 카드(랜 카드)에 저장된 주소로 기본적으로 네트워크 인터
페이스 카드가 만들어질 때 부여
MAC 주소는 각 하드웨어를 구별하는 역할을 수행
MAC 주소는 : 이나 - 으로 구분되는 여섯 개의 16진수로 구성되며 총 48bit
• 앞의 세 자리는 제조사 번호이고 뒤의 세 자리는 일련번호
• 제조사 번호는 국제 표준 기구 중 하나인 IEEE에서 지정
인터넷으로 연결된 네트워크에서 각 컴퓨터를 구분하기 위해 사용
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
네트워크 장비에 신호를 보냄
옵션
-a: 통신이 되면 소리를 낸다.
-q: 테스트
-c 개수: 보낼 패킷 수를 지정한다.
네트워크 상태 정보를 출력
옵션
-a: 모든 소켓 정보를 출력
-r: 라우팅 정보를 출력
-n: 호스트명 대신 IP 주소로 출력
-i: 모든 네트워크 인터페이스 정보를 출력
-s: 프로토콜별로 네트워크 통계 정보를 출력
-p: 해당 소켓과 관련된 프로세스의 이름과 PID를 출력
arp 캐시 정보를 관리