

종류
service: 시스템 서비스 유닛으로 데몬을 시작, 종료, 재시작 및 로드target: 유닛을 그루핑automount: 디렉토리 계층 구조에서 자동 마운트 포인트를 관리device: 리눅스 장치 트리에 있는 장치를 관리mount: 디렉토리 계층 구조의 마운트 포인트를 관리path: 파일 사스템의 파일이나 디렉토리 등 경로를 관리scope: 외부에서 생성된 프로세스를 관리slice: 시스템의 프로세스를 계층적으로 관리socket: 소켓을 관리하는 유닛으로 AF_INET, AF_INET6, AF_UNIX Socket Stream, Datagram, FIFO 지원swap: 스왑 장치 관리timer: 타이머 와 관련된 기능을 관리systemctl [옵션] [명령] [유닛명]
-a : 상태와 관계없이 유닛 전체를 출력-t : 유닛 종류만 출력start: 유닛을 시작stop: 유닛을 정지reload: 유닛의 설정 파일을 다시 읽어옴restart: 유닛을 재시작status: 유닛 상태를 출력enable: 부팅 시 유닛이 시작되도록 설정disable: 부팅 시 유닛이 시작하지 않도록 설정is-active: 유닛이 동작하고 있는지 확인is-enabled: 유닛이 시작되었는지 확인isolate: 지정한 유닛 및 이와 관련된 유닛만 시작하고 나머지는 정지kill :유닛에 시그널을 전송
# 현재 target 확인
systemctl get-default
# 현재 Run Level 확인
runlevel
sytemctl set-default <name or target>.targetsudo systemctl set-default multi-user.targetsystemctl daemon-reload 그리고 systemctl enable 명령어를 수행해서 서비스를 등록하고 활성화 시킴[Unit]
Description=My custom service
After=network.target
[Service]
ExecStart=/path/to/your/script/myservice.sh
Restart=on-failure
[Install]
WantedBy=multi-user.targetAfter=network.target 은 서비스가 시작되기 전에 네트워크 서비스가 먼저 실행되어야 함WantedBy 에 Run Level 설정 가능systemctl daemon-reload : 새로운 서비스 파일을 읽어서 서비스 데몬을 다시 시작shutdown [옵션] [시간] [메시지]
옵션
-k: 실제로 시스템을 종료하는 것이 아니라 사용자들에게 메시지만 전달-r: 종료한 후 재시작-h: 종료하고 halt 상태로 이동-f: 빠른 재시작으로 이 과정에서 fsck를 생략할 수 있음-c: 이전에 내렸던 shutdown 명령을 취소시간
hh:mmnow-k, -h 옵션을 사용하면 메시지만 전송하고 종료되지 않음메시지
sudo init 0 또는 sudo init 6sudo systemctl isolate poweroff.targetsudo systemctl isolate runlevel0.targetsudo systemctl isolate reboot.targetsudo systemctl isolate runlevel6.targethalt : /sbin/haltpoweroff : /sbin/poweroffreboot : /sbin/reboot
/boot/grub/grub.cfg 파일/etcgrub.d 디렉터리/etc/default/grub 파일ro splash $vt_handoff 부분을 rw init=/bin/bash 로 수정→ Host OS 위에서 특정 프로세스(컨테이너)를 격리시킨다.
CPUMemoryFreezer: cgroup 의 작업을 일시 중지하거나 다시 시작blkio 블록 장치에 대한 I/O를 제한net_cls: 트래픽 컨트롤러가 특정 cgroup 작업에서 발생하는 패킷을 식별하게 하는 네트워크 패킷 태그를 지정cpuset: 개별 CPU 메모리 노드를 cgroup에 할당cpuacct: CPU 자원 보고서 생성devices: cgroup의 작업 단위ns: namespace 서브 시스템echo 로 출력한 값을
|를 지나서 파일에 입력하는 실습 해보기
echo "5000 10000" |
sudo tee testtee.txt
msdociso9660 : CDROM 이나 DVD 등의 읽기 전용 파일 시스템nfs(Network File System) : 원격 서버의 디스크를 연결할 때 사용ntfs : 윈도우의 기본 파일 시스템swap
tmpfs
ramfs
rootfs
proc
/proc/cpuinfo → CPU 정보/proc/meminfo → 메모리 사용량/proc/uptime → 시스템 부팅 후 경과 시간/proc/loadavg → 시스템 부하 평균/proc/[PID]/status → 특정 프로세스 상태/proc/sys/net/ipv4/ip_forward → 패킷 포워딩 여부 (0/1 변경 가능)cat /proc/filesystems


📌 File name - Inode - Data block
- Symbolic Link → file name 을 참조
- Hard Link → inode 를 참조
- inode - Reference Count 라는 정보도 갖고 있음
- 이 값이 0이 되면 inode가 삭제됨.
- 파일을 지우는 명령어를 실행하면 Reference Count 값에 -1
- 파일명(하드 링크)이 모두 사라져야 inode가 삭제됨
- 데이터 블록은 연결된 inode 가 없으면 읽기가 안 되고,
할당만 가능

하나의 파일 시스템으로 구성: 윈도우즈와 다른 점
/디렉토리에 파일 시스템을 연결여러 파일 시스템으로 구성은 가능

- 파일 시스템 하나는 `/` 에 연결하고 다른 파일 시스템 하나는 `/usr` 에 연결하는 형태로 구성 가능
- 이런 경우는 여러 개의 디스크나 여러 개의 파티션을 서로 간에 간섭없이 사용하기 위해서 구성
리눅스에서 시스템이 부팅될 때 자동으로 파일 시스템이 마운트 되게 하려면 /etc/fstab 파일에 관련 사항을 결정
/etc/fstab 파일의 구조
/dev/disk/by-id/dm-uuid-LVMOPh3q8uzO0MHMG4KhpE91917VA5rShWqiCYY7t5z4DocjUMK6DQK2eo48Y46 : 장치 이름
/ : 루트 디렉토리에 연결
ext4 : 파일 시스템 종류
defaults :
0 : 0이면 덤프 명령으로 덤프되지 않은 파일 시스템이고, 1이면 데이터 백업 등을 위해 dump 명령의 사용이 가능한 파일
1 : 0이면 부팅할 때 fsck 명령으로 파일 시스템을 점검하지 않도록 한다. 1이면 루트 파일 시스템 2이면 루프 파일 이외의 시스템
옵션 내용
defaults : 일반적인 파일 시스템에 지정하는 속성으로 rw, nouser, auto, exec, suid 속성을 모두 포함auto : 부팅 시 자동으로 마운트exec : 실행 파일이 실행되는 것을 허용(데이터를 저장하는 것이 목적이라면 제거)suid : setuid, setgid 의 사용을 허용ro : 읽기 전용 파일 시스템rw : 읽기 및 쓰기가 가능한 파일 시스템user: 일반 사용자도 마운트가 가능하다nouser: 일반 사용자의 마운트가 불가능하고 root 만 마운트 가능noauto: 부팅 시 자동으로 마운트하지 않음noexec: 실행 파일이 실행되는 것을 허용하지 않음nosuid: setuid, setgid 의 사용을 금지usrquota: 사용자 별로 디스크 쿼터 설정이 가능grpquota: 그룹 별로 디스크 쿼터 설정이 가능mount [옵션] [장치명 마운트포인트]
옵션
-t 파일 시스템 종류: 파일 시스템 종류를 지정-o 마운트 옵션: 마운트 옵션을 지정-f: 마운트를 할 수 있는지 점검만 수행-r: 읽기만 가능하게 마운트(-o ro와 동일)ex)
mount –t iso9660 /dev/cdrom /mnt/cdrom연결 해제는 unmount 이름
mount 만 사용하면, /etc/mtab 의 내용을 출력
ex)
mount /dev/sdc1 /mnt : 리눅스에서 포맷한 경우mount -f vafat /dev/sdc1 /mnt : 윈도우에서 포맷한 경우mount -f nfs 서버주소 : /디렉토리 /mntsudo fdisk -l
Partition: 물리적 디스크를 운영체제에서 사용할 수 있도록 만든 논리적 공간
- 물리적 디스크는 1개 파티션을 만들어야만 사용이 가능
sudo fdisk /dev/sdb 명령을 수행하고 m 을 누르면 사용할 수 있는 옵션이 출력됨dnp1Enter(맨 앞에서부터)wsudo mke2fs -t ext4 /dev/sdb1sudo mount /dev/sdb1 /mntsudo umount /mnt/dev/sda0/dev/sda1/dev/sda2fdisk [옵션] [장치명]-b 크기 : 섹터 크기 지정-l : 파티션 테이블 조회mkfs
mkfs -f 파일시스템종류 파티션mke2fs
mke2fs [옵션][파티션]파일 시스템을 생성해야 마운트 가능

PV(Physical Volume, 물리 볼륨) : 실제 하드디스크의 파티션VG(Volume Group, 볼륨 그룹) : 여러 개의 PV를 그룹으로 묶은 것LV(Logical Volume, 논리 볼륨) : VG를 다시 적절한 크기의 파티션으로 나눌 때 이 파티션이 LVPE(Physical Extent) : PV가 가진 일정한 블록LE(Logical Extent) : LV가 가진 일정한 블록fdisk : 기존 파일 시스템의 종류 변경pvcreate : PV 생성vgcreate : VG 생성vgchange -a y : VG 활성화lvecreate : LV 생성mkfs, mkfe2fs : LV에 파일 시스템 생성mount : LV 마운트df
df [옵션] [파일 시스템]-a: 모든 파일 시스템을 대상으로 디스크 사용량을 확인-k: 디스크 사용량을 KB 단위로 출력-m: 디스크 사용량을 MB 단위로 출력-h: 디스크 사용량을 알기 쉬운 단위(GB, MB, KB 등)로 출력-t 파일 시스템 종류: 지정한 파일 시스템 종류에 해당하는 디스크의 사용랑을 출력-T: 파일 시스템 종류를 출력du
du [옵션] [디렉토리]-s : 특정 디렉토리의 전체 사용량을 출력-h : 디스크 사용량을 알기 쉬운 단위(GB, MB, KB 등)로 출력fsck
리눅스의 파일 시스템을 점검
fsck [옵션] [장치명]
-f : 강제로 점검
-b 슈퍼블록 : 슈퍼블록으로 지정한 백업 슈퍼블록을 사용
-y : 모든 질문에 yes 로 대답
-a : 파일 시스템 검사에서 문제를 발견했을 때 자동으로 복구견해
e2fsck
e2fsk [옵션] [장치명]-f : 강제로 점검-b 슈퍼블록 : 슈퍼블록으로 지정한 백업 슈퍼블록을 사용-y : 모든 질문에 yes 로 응답-j ext3/ext4 : ext3나 ext4 파일 시스템을 검사할 때 지정배드 블록 검사
badblocks
badblocks [옵션] [장치명]
-v : 검색 결과를 자세하게 출력-o 출력 파일 : 검색한 베드 블록 목록을 지정한 출력 파일에 저장
하드웨어 RAID소프트웨어 RAID