at
단일성 예약 작업
at 작업 설정
at [option] time-spec
at 작업 확인
atq
at now +2min
2분 뒤 processli 파일 생성 확인
crontab
cron -> 그리스어로 '시간'
tab -> table
'누가 어떤 작업을 몇 시에 하라고 걸었음' 을 정리
crontab 에서 중요한 것
➡️ crontab 은 주기적으로 예약해 놓은 작업을 수행하는 명령어
(사람이 수동으로 작업하는 것이 아니라 정해진 시간에 시스템이 자동으로 작업)
crontab 구조
분 시 일 월 요일 command
0-59 0-23 0-31 1-12 0-7 command
작업 예약해보기
매 시간의 35분마다 what_time_is_it.txt 만들기
crontab -e
35 * * * * touch what_time_is_it.txt
매 분(1분)마다 date 명령어 사용한 결과값을 리다이렉션을 이용하여 date.log 라는 파일 생성하기
crontab -e
* * * * * date > /home/cronuser/date.log
*2분 간격 `*/2`
*crontab -l
으로 현재 로그인한 사용자가 걸어놓은 작업 볼 수 있음
*접시같은 모양 = 플래터
cylinder: 여러 개의 플래터의 트랙을 수직적으로 관통하는 부분
track: 플래터 표면에 동심원에 데이터를 저장하는 공간
sector: 트랙을 조각으로 쪼갠 것, 가장 작은 단위 (보통 512byte)
cluser: 섹터의 그룹
sector : 하드에 물리적으로 저장하는 단위
block: 파일 시스템에 저장하는 단위 (OS 가 인지하는 단위)
*왜 굳이 나눠서 관리 함? 사용자의 목적에 따라 나눠 관리를 용이하게 하기 위해서
파티션에 관한 메타 데이터 저장 방식
MBR
GPT (최신식?)
확장 파티션(extended partition)은 데이터 저장은 불가하고, 부족한 파티션 테이블 영역 확장 용도
확장 파티션 영역에 생성되는 논리 파티션은 데이터 저장이 가능하나 OS 설치하여 부팅은 불가
fdisk [파티셔닝할 디스크]
*m
으로 명령어 확인 가능
n
: 새로운 파티션 추가
p
: 파티션 타입 - 주요 파티션
w
: 파티션 테이블에 기록(저장)
*시작 섹터와 마지막 섹터는 섹터 주소(10485759) or 용량 (+2G)
*5G 중 3G 만 파티셔닝하게되면 나머지 2G 는 죽은 공간이 됨
WARNING: Re-reading the partition table failed with error 16: Device or resource busy
-> 사용 중인 디스크 파티션 시도 시에 나오는 문구
partprobe [파티셔닝한 디스크]
위 명령어로 커널에서 변경된 파티션의 정보 인식시킴
파일의 규칙/정리되는 룰 없이 디스크에 데이터가 저장되면 OS 의 많은 자원 낭비
따라서 파일시스템과 같은 파일 관리 체계 필요
파일시스템 종류
-MINIX
-EXT
-XFS
-FAT
-ISO9660
-UDFS
*저널링-스토리지에 데이터 변경이 반영되기 전에 journal 영역에 변경 이력을 저장하고 반영
분산 파일시스템
여러 대의 서버를 클러스터로 묶어놓은 것을 외부의 사용자는 하나의 노드인 것처럼 이용
- NFS: 리눅스에서 파일 공유 목적으로 만든 분산시스템 방식, 네트워크를 통해 공유 장원을 로컬 자원처럼 사용 가능
- SMB: 윈도우-리눅스 간의 파일 공유 기능 제공, 리눅스에선 Samba 통해 SMB 공유 제공 가능 (CIFS - SMB 확장 버전)
/etc/fstab
에서 파일시스템 마운트 정보를 가져와 파일시스템을 마운트파일시스템 생성
mkfs -t [filesystem-type] [디스크/파티션]
마운트 포인트 지점 생성 mkdir [디렉터리 경로]
마운트 mount [장치 이름] [마운트 포인트]
*df -h
명령어로 마운트된 장치만 확인 가능
마운트 정보 등록하기
/etc/fstab
파일에 다음과 같은 내용 추가
장치이름[/dev/~ or UUID] 마운트 포인트 파일시스템 타입 옵션 덤프유무 체크유무
mount -a
파일시스템 테이블에 등록된 항목 중 마운트 되지 않은 항목 마운트
*만약 파일 수정 후 부팅되지 않으면 문법 오류이니 root 로그인 후 위 파일에 가서 수정 or 제거 하면 됨
-> 당연히 마운트 안됨
-> sd1, sd2 를 시도, 나중에 마운트시킨 sdc2 만 올라오게 됨
sdc1 은 잘못된 argument 라고 한다 -> 마운트 되었다고 인식안하는 듯
다시 디렉토리를 만들고 마운트 포인트를 다르게 마운트하면 lsblk
에선 제대로 출력됨
sdc2 또한 마지막에 마운트해준 지점으로 변경됨
df -h
로 마운트된 장치만 보여주는 명령어 사용 시 sdc2 만 마운트 된, 여전히 이전과 같은 마운트 포인트인것을 볼 수있음
-> 마운트는 덮어 씌워지지만 실제로 마운트가 되지는 않음
sdc2 의 이전 지점으로만 바뀌고, 실제로는 마운트 해제 안됨.
한번 더 마운트 해제를 해봄
-> mount
를 두번하면 덮어씌워지고, umount
도 마운트한 만큼 사용해야 마운트가 해제됨
추가로 해봄
(sdc2 마운트 후 sdc1 을 같은 디렉토리에 마운트)
서로 순서를 바꿔서 마운트 해보았으나, 그냥 최근에 마운트한 장치가 마운트되는 것을 확인