0. 프로세스 관리
정해진 시간에 정해진 동작 반복 실행
crontab
정해진 시간에 반복적으로 명령 실행
crond (daemon process)에 의해 crontab 파일 내용을 참조하여 자동으로 정해진 작업 수행
crontab 파일 위치 : /var/spool/cron
crontab [옵션] <파일명>
- crontab 파일 편집 명령
- crontab 파일 초기 내용은 주석(comment, #으로 시작)으로만 구성
- -e : crontab 파일 편집
- -l : crontab 내용 출력
- -r : crontab 파일 삭제
crontab 파일 내용
30 * * * * /usr/bin/ls -FR / > ~worker/cron.out
' * '는 설정하지 않는다는 뜻!
- 30 : 분 (0~59)
- 첫번째 * : 시 (0~23)
- 두번째 * : 일 (1~31)
- 세번째 * : 월 (1~12)
- 네번째 * : 요일 (0~6)
- /usr/bin/ls -FR > ~worker/cron.out : 작업 내용
crontab -e
crontab 파일에 정해진 시간에 작업할 내용을 등록, 정해진 시간에 등록된 작업 내용 자동 실행
1. Linux 파일 시스템
File System
- 파일과 디렉토리의 집합을 구조적으로 관리하는 체계
- 어떤 구조로 구성하여 파일이나 디렉토리를 관리하느냐에 따라 다양한 형식의 파일 시스템 존재
- 파일과 디렉토리 관리
- 보조기억장치(HDD, SSD)에 구성하는 형식
- Linux는 보조기억장치 외에도 IO 장치 사용시 해당 장치에 적합한 파일 시스템 적용
Linux 파일 시스템
Linux 파일 구조
- inode block : 파일 정보 -> inode 번호, 권한, 소유자, 파일유형 등
- data block : 데이터 저장, 기본 크기 (4KB) -> ext4
Linux 파일 종류
일반 파일
일반 데이터 저장 파일; inode block + data block (데이터 저장)
디렉토리 파일
디렉토리 정보 저장 파일
특수 파일
디바이스 파일
- Linux는 모든 장치에 연결할 때 해당 장치 연결을 위한 디바이스 파일 필요
- Linux에서 외부장치에 연결해서 사용하기 위해서는 항상 디바이스 파일 필요
- 디바이스 연결 목적 -> 데이터 저장 기능 X
- /dev 디렉토리에 저장됨
디바이스 파일 종류
- character 디바이스 파일
- 입출력을 character 단위로 수행하는 디바이스 연결
- block 디바이스 파일
- 입출력을 block 단위로 수행하는 디바이스 연결
- 파일 크기 X, 디바이스 여러개 식별을 위한 번호 부여
- major 번호 : 장치식별번호
- minor 번호 : 해당 장치가 여러개인 경우의 식별번호
프로세스 간 데이터 공유 (통신)
- 파이프 파일 : 프로세스 간 데이터 공유를 위한 파일
- 소켓 파일 : 프로세스 간 데이터 공유를 이용하여 socket 사용시 쓰는 파일
저널링
- 데이터를 디스크에 기록하기 전 먼저 저널에 수정사항 기록 => 복구 정보
- 디스크에 데이터를 기록하기 전 문제 발생시 저널의 기록을 보고 빠르게 복구 가능
ext4 (EXTended file system)
- Linux 기본 (표준) 파일 시스템
- ext2와 ext3 호환 유지
- 1 EB (Hexa Byte, 1 EB = 1024 * 1024 TB) 이상의 볼륨과 16 TB 이상 파일 지원
- 서브 디렉토리 수 64000개까지 지원
- 온라인 조각 모음 지원
XFS (eXtended File System)
- 64 bit 파일 시스템
- 최대 16 EB까지 지원
- CentOS 7에서는 기본 파일 시스템으로 사용, ext4도 병행 사용
Linux 지원 파일 시스템
- msdos : MS-DOS 파티션 사용을 위한 파일 시스템
- iso9660 : CD-ROM, DVD 표준 파일 시스템, 읽기 전용
- nfs (network file system) : 원격서버 디스크 연결시 사용
- NAS : Network를 이용하여 HDD/SSD 공유, FTP (파일 공유 프로토콜)
- ufs (unix file system) : 유닉스 표준 파일 시스템
- vfat : 윈도우 95/98/NT 지원
- FAT : Windows의 NTFS 이전 파일 시스템, 요즘은 FAT을 개선한 FAT32 사용
- hpfs : HPFS 지원
- ntfs : 윈도우 NTFS 지원
- sysv : 유닉스 시스템 V 지원
- hfs : 맥 OS hfs 파일 시스템 지원
Linux 가상 파일 시스템 (Virtual File System)
- 메모리에 생성/관리되는 파일 시스템
- 특수 용도 => 임시 사용인 경우 활용
- 필요시에만 사용하고 없어지는 파일 세스템
- swap : swap 영역을 관리하기 위한 파일 시스템
- tempfs (Temporary File System) : 메모리에 임시 파일 저장 목적 ; /tmp 디렉토리
- proc : proc 파일 시스템 ; /proc 디렉토리 ; Linux 커널 상태정보를 파일로 저장하여 관리
- ramfs : 랩 디스크 지원
- rootfs (Root File System) : / (root) 디렉토리 파일 시스템 ; 시스템 초기화 및 관리 목적
Linux 설치시 최소 필수 파일 시스템
- rootfs : / (root) 디렉토리 구성
- swap : swap 용도
/proc/filesystems
현재 시스템이 지원하는 파일 시스템
- nodev : 해당 파일 시스템이 블록 장치와 연결되어 있지 않은 가상 파일 시스템
- /proc/<숫자> : 개별 프로세스에 대한 정보 저장 디렉토리
- /proc/<문자> : Linux 커널에서 관리하는 일반적인 정보 저장 디렉토리/파일
2. 디스크 관리
Linux 파일 시스템 마운트
마운트 (mount)
리눅스 시스템에서 외부 장치 연결을 위해서는 마운트 작업을 통해 연결 작업 수행 후 사용 가능
- mount : 파일 시스템을 디렉토리 계층 구조의 특정 디렉토리와 연결
- mount point : 디렉토리 계층 구조에서 파일 시스템이 연결되는 디렉토리
/etc/fstab
Linux 시스템 부팅시 연결할 외부장치 연결정보 저장 파일
- 장치명 : UUID
- 마운트 포인트 : /
- 파일 시스템 종류 : ext4
- 옵션 : error=remount-ro
- 덤프 관련 설정 : 0
- 파일 점검 옵션 : 1
UUID
- Universally Unique IDentifier 범용 고유 식별자
- 로컬 시스템과 他 시스템을 유일하게 구분하기 위한 128 bit 숫자
- 시스템 / 시간 정보를 조합하여 랜덤으로 생성
- UUID로 지정된 장치는 /dev/disk/by-uuid 디렉토리에서 확인 가능
마운트 포인트 : 장치가 연결된 디렉터리
옵션 : 파일 시스템 속성
덤프 관련 설정
파일 점검 옵션
- 0 : 부팅시 fsck 안함
- 1 : 루트 파일 시스템
- 2 : 루트 파일 시스템 이외
새로운 디스크 (HDD/SSD) 연결 절차
관리자 권한으로 수행
- [새로운 디스크 파티션 생성 => fdisk 명령] -> 필요시 사용
- [생성된 파티션에 파일 시스템 생성 (디스크 포맷) => mkfs 명령] -> 필요시 사용
- 마운트 => mount 명령 -> 장치 연결시 사용
mount 명령
파일 시스템 마운트 ; mount [옵션] <디바이스 파일> <마운트 포인트>
- 일반적으로 /mnt 디렉토리에 마운트 포인트 설정
- 관리자 권한으로 실행
umount 명령
마운트 해제 ; umount <마운트 포인트>
관리자 권한으로 실행
lsblk 명령
리눅스 디바이스 정보 확인 ; lsblk : Linux 디스크 장치 이름
- IDE 컨트롤러 연결된 디스크 -> /dev/hd로 시작
- SCSI나 SATA 컨트롤러 연결된 디스크 -> /dev/sd로 시작
- 최근에는 IDE/SCSI/SATA 구분 없이 /dev/sd로 시작
- 컨트롤러에 연결된 디스크 순서에 따라 알파벳 추가
- /dev/sda : 첫번째 디스크
- /dev/sdb : 두번째 디스크
- /dev/sdc : 세번째 디스크
등등등...
- 하나의 디스크에 파티션 구분에 따라 숫자 표기
- /dev/sda : 첫번째 디스크 전체
- /dev/sda1 : 첫번째 디스크 첫번째 파티션
- /dev/sda2 : 첫번째 디스크 두번째 파티션
fdisk 명령
디스크 파티션 생성 ; fdisk [옵션] <장치명>
- -l : 파티션 테이블 출력
- 파티션 종류
- fdisk 명령 실행하면 fdisk 명령 프롬프트가 표시되고 원하는 기능의 명령 문자 입력
- m : 도움말
- n : 새로운 파티션 생성
파티션 번호
First Sector
Last Sector
- p : 파티션 테이블 출력
- w : 파티션 저장
- 관리자 권한으로 실행
mkfs 명령
파일 시스템 생성 ; mkfs [옵션] <장치명 (장치 파일)>
- -t <파일 시스템> : 생성할 파일 시스템
- sudo mkfs -t ext4 <장치명 (장치파일)>
- sudo mkfs.ext4 <장치명 (장치파일)>
- 관리자 권한으로 실행
df 명령
디스크 사용량 확인, mount 정보 확인 가능 ; df [옵션]
- -a : 모든 파일 시스템 사용량 확인
- -h : 디스크 사용량 출력
- -T : 파일 시스템 종류 출력
du 명령
사용자/디렉토리별 사용량 확인 ; du [<디렉토리>]
chown 명령
change owner, 파일 또는 디렉토리의 소유자 및 그룹 변경;
chown user[:group] <파일 또는 디렉토리>
3. TIF
오늘 정말 역대급으로 어려웠다. 초반에 crontab까지는 그래도 따라갈만 했는데, 마운트로 넘어가면서부터는 완전히 길을 잃어버렸다. 거기다 마운트 실습도 삐끗하다가 그만 우분투 자체가 아예 망가져버려 처음부터 다시 설치해야했던 다사다난한 하루였다.
천만다행히도 이 블로그 포스트 덕에 두번째 시도에선 겨우겨우 마운트에 성공했지만, 앞으로의 실습은 함부로 따라하지 않는게 좋을 것만 같은 기분이다.