제어할 수 있는 터미널을 지정받지 못 했기 때문에, 출력하는 명령어의 결과를 화면에 띄울 수가 없음 => 출력하는 명령어의 결과를 메일로 보내오거나 리다이렉션을 이용해서 파일로 저장을 해야 함
메일은 mail명령어로 확인 가능
[root@localhost ~]# mail // 빠져나올 시 CTRL + D
특정시기에 한 번 작업을 수행
자주 사용되지는 않지만, 부재중일 때 어떤 명령을 처리해야할 때 사용
ex) 부재중일 때 시스템을 재부팅해야 할 때
atd 서비스 사용
# at timespec
at> 작업명령
at> CTRL + D
<EOF>
[root@localhost ~]# date
2022. 02. 24. (목) 11:07:05 KST
[root@localhost ~]# at 11:10
at> date
at> <EOT>
job 1 at Thu Feb 24 11:10:00 2022
[root@localhost ~]# at -l
1 Thu Feb 24 11:10:00 2022 a root
[root@localhost ~]# atq
1 Thu Feb 24 11:10:00 2022 a root
# at [시간] [날짜]
# at now +2hour (분 min, 시 hour)
# at 16:00
# at 04:00 PM
# at teatime
# at 16:00 2/23/22 (월,일,년)
# at 16:00 23-02-23 (년,월,일)
# # at 04:00 PM today
# at teatime today
# at 00:00
# at 12:00 AM
# at midnight
# at 12:00 PM 2/24/22
# at noon tomorrow
timespec에 대한 정보는 /usr/share/doc/at-3.1.13/timespec 파일에서 확인 가능
# cat /usr/share/doc/at-3.1.13/timespec ... %token NOW %token AM PM %token NOON MIDNIGHT TEATIME ...
주기에 맞춰서 해당 작업을 수행
crond 서비스를 이용, 데몬서비스(시스템에 의해)에 의해서 실행
사용자들이 crontab이라고 하는 명령어를 통해서 등록
[root@localhost ~]# crontab -e
[vi 편집기창]
"/tmp/crontab.f4PqeM" 0L, 0C
crontab안에는 기본설정이 쓰여있지만, crontab -e를 하면 비어있음 => -e옵션에 기본설정이 포함되어 있음
[root@localhost ~]# vi /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root
crontab에 직접 예약을 한다면
/etc/cron.d/파일명 으로 저장해야 함[root@localhost ~]# ls /etc/cron.d 0hourly pcp-pmie pcp-pmlogger raid-check sysstat
임시파일로 저장해둠
# 아래와 같은 방법도 가능
* * * * * ecntos date > datefile
/etc/cron.d/centosrcron
분 | 시 | 일 | 월 | 요일 | command |
---|---|---|---|---|---|
0~59 | 0-23 | 1-31 | 1-12(약식월) | 0-7,(약식요일)(sun,mon,tue...)} |
0 0 1 1 * reboot
*/15 15-18 15 12(or dec) * date
0 13 1-7 * 1(mon) date
* * * * * date >> datefile
cron은 root사용자만 확인할 수 있지만, crontab은 setuid 가 설정되어 있어서 root사용자가 아닌 다른 사용자도 예약을 할 수 있음
[root@localhost ~]# ls -l /bin/crontab -rwsr-xr-x. 1 root root 57576 4월 11 2018 /bin/crontab
cron과 anacron 2가지 종류 존재
[root@localhost ~]# vi /etc/anacrontab
# /etc/anacrontab: configuration file for anacron
# See anacron(8) and anacrontab(5) for details.
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22
#period in days delay in minutes job-identifier command
1 5 cron.daily nice run-parts /etc/cron.daily
7 25 cron.weekly nice run-parts /etc/cron.weekly
@monthly 45 cron.monthly nice run-parts /etc/cron.monthly
매주 수~금 오후 5시에 /var/log/secure의 내용 중 오전 8시 정각부터 오후 5시59분까지의 내용을 securefile에 갱신하도록 설정
0 17 * * 3-5 egrep ‘^... .. (0[89|1[0-7]])’ /var/log/secure > securefile’
파일에 쓰고 불러오기
vi 파일명
... timespec 작업내용 작성
:wq
crontab 파일명
n번 작업만 삭제
crontab -e
vi 편집기에서 n번 작업 내용 삭제
:wq
crontab -r이 취소라며❓ -r 옵션은 모든 예약 내역을 삭제. 하나의 예약만 삭제가 불가능하기 때문에
절차 | 디스크 삽입 -> | 파티션 생성-> | 파일시스템 포맷-> | 마운트 |
---|---|---|---|---|
비유 | 땅을 산다 | 건물을 짓는다 | 인테리어를 한다 | 문을 만들어서 연결한다 |
디스크의 논리 구조 : sector -> track -> cyliner -> disk
현재 시스템의 블록장치에 관련한 상태 확인
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 60G 0 disk
├─sda1 8:1 0 4G 0 part [SWAP]
└─sda2 8:2 0 56G 0 part /
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 2G 0 part
├─sdb2 8:18 0 2G 0 part
├─sdb3 8:19 0 2G 0 part
└─sdb4 8:20 0 1K 0 part
sr0 11:0 1 1024M 0 rom
파일시스템 상태 확인
장치관련은 /dev로 시작
[root@localhost ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda2 xfs 56G 4.3G 52G 8% /
devtmpfs devtmpfs 985M 0 985M 0% /dev
tmpfs tmpfs 1000M 0 1000M 0% /dev/shm
tmpfs tmpfs 1000M 9.3M 991M 1% /run
tmpfs tmpfs 1000M 0 1000M 0% /sys/fs/cgroup
tmpfs tmpfs 200M 12K 200M 1% /run/user/42
tmpfs tmpfs 200M 0 200M 0% /run/user/0
/dev/sdb1 ext4 2.0G 6.0M 1.8G 1% /mnt/disk1
/dev/sdb2 ext4 2.0G 6.0M 1.8G 1% /mnt/disk2
/dev/sdb3 ext4 2.0G 6.0M 1.8G 1% /mnt/disk3
파일시스템 관련 파티션 확인
[root@localhost ~]# blkid
/dev/sda1: UUID="88f82736-89b0-49e6-88c5-165c88bcc5bf" TYPE="swap"
/dev/sda2: UUID="231c776b-3197-4e9f-a142-6b80be0ca930" TYPE="xfs"
/dev/sdb1: UUID="636ceaa2-2ff1-44aa-8036-921b7b7c9a11" TYPE="ext4"
/dev/sdb2: UUID="05deec60-c3cb-4621-9eab-6e4c0f0f0447" TYPE="ext4"
/dev/sdb3: UUID="ab8eddaa-3401-414a-95f4-f6a7516f4f8a" TYPE="ext4"
/dev/sdb5: UUID="ae020ac0-2ecc-4497-82d8-5cd97cc216eb" TYPE="xfs"
/dev/sdb6: UUID="a5e62c11-63e3-43ff-8b7c-6a35bdfefebf" TYPE="xfs"
/dev/sdb7: UUID="33b3b32d-6ae2-4df0-8a0b-70e7e9b617fe" TYPE="xfs"
/dev/sdb8: UUID="bb718729-6184-41ec-a3c2-338f00e4ed8d" TYPE="xfs"
UUID는 자동으로 파티션, 스왑 마운트 할 때 사용되는 값
드라이브를 논리적으로 여러 부분으로 분할하는 것
=> 백업을 목적으로 시스템과 데이터를 분리할 수 있는 장점
MBR | GPT | ||
---|---|---|---|
개발시기 | 1980년대 초 | 1990년대 말 | |
파티션 수 | 주 파티션 4개 or 주1 확장1 | 주 파티션 128개 | |
인식용량 | 최대 2TB, 초과 시 인식 불가 | 8ZB(80억 TB) | |
명령어 | fdisk | gdisk | 공통은 parted |
한 디스크에는 하나의 파티션 종류만 사용이 가능
MBR 파티션 생성
# fdisk [디스크명]
Command (m for help):
d delete a partition
m print this menu
n add a new partition
p print the partition table
q quit without saving changes
t change a partition's system id
# t옵션 사용시
Hex code (type L to list all codes): L
L을 입력 시 id목록을 확인할 수 있음
w write table to disk and exit
대상:/dev/sdb
주 파티션 2G 2G 2G
# 첫 번째 주 파티션 생성
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p):
Using default response p
Partition number (1-4, default 1):
First sector (2048-41943039, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +2G
Partition 1 of type Linux and of size 2 GiB is set
# 두번 째 주 파티션 생성
Command (m for help): n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p):
Using default response p
Partition number (2-4, default 2):
First sector (4196352-41943039, default 4196352):
Using default value 4196352
Last sector, +sectors or +size{K,M,G} (4196352-41943039, default 41943039): +2G
Partition 2 of type Linux and of size 2 GiB is set
# 세번 째 주 파티션 생성
Command (m for help): n
Partition type:
p primary (2 primary, 0 extended, 2 free)
e extended
Select (default p):
Using default response p
Partition number (3,4, default 3):
First sector (8390656-41943039, default 8390656):
Using default value 8390656
Last sector, +sectors or +size{K,M,G} (8390656-41943039, default 41943039): +2G
Partition 3 of type Linux and of size 2 GiB is set
# 확장 파티션 생성
Command (m for help): n
Partition type:
p primary (3 primary, 0 extended, 1 free)
e extended
Select (default e):
Using default response e
Selected partition 4
First sector (12584960-41943039, default 12584960):
Using default value 12584960
Last sector, +sectors or +size{K,M,G} (12584960-41943039, default 41943039):
Using default value 41943039
Partition 4 of type Extended and of size 14 GiB is set
Command (m for help): p
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x76abe2a7
Device Boot Start End Blocks Id System
/dev/sdb1 2048 4196351 2097152 83 Linux
/dev/sdb2 4196352 8390655 2097152 83 Linux
/dev/sdb3 8390656 12584959 2097152 83 Linux
/dev/sdb4 12584960 41943039 14679040 5 Extended
sdb4 확장 파티션엔 2G를 할당했는데 왜 1K만 나올까❓ logical 파티션을 생성하기 위해 공간만 확보한 것이지 실제로 logical 파티션을 만들기전 까지는 용량이 없음 => 확장 파티션을 삭제하면 logical 파티션까지 함께 삭제됨
[root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 60G 0 disk ├─sda1 8:1 0 4G 0 part [SWAP] └─sda2 8:2 0 56G 0 part / sdb 8:16 0 20G 0 disk ├─sdb1 8:17 0 2G 0 part ├─sdb2 8:18 0 2G 0 part ├─sdb3 8:19 0 2G 0 part └─sdb4 8:20 0 1K 0 part sr0 11:0 1 1024M 0 rom
4번째 파티션을 진행할 때 default가 확장 파티션인데 주 파티션으로 만드는 경우 직면할 수 있는 경고 메시지
- 남은 용량이 5G라 5G를 직접 할당했는데 용량이 모자라다고 오류가 나는 이유는❓ 이미 mbr partition table(주(primary) 파티션 엔트리를 포함하고 있는 테이블)이 할당되어 있기때문에
그래도 default로 할당하면 대략 5G로 할당 됨
확장 파티션 2G 2G 2G 2G
Command (m for help): n
All primary partitions are in use
Adding logical partition 5
First sector (12587008-41943039, default 12587008):
Using default value 12587008
Last sector, +sectors or +size{K,M,G} (12587008-41943039, default 41943039): +2G
Partition 5 of type Linux and of size 2 GiB is set
Command (m for help): n
All primary partitions are in use
Adding logical partition 6
First sector (16783360-41943039, default 16783360):
Using default value 16783360
Last sector, +sectors or +size{K,M,G} (16783360-41943039, default 41943039): +2G
Partition 6 of type Linux and of size 2 GiB is set
Command (m for help): n
All primary partitions are in use
Adding logical partition 7
First sector (20979712-41943039, default 20979712):
Using default value 20979712
Last sector, +sectors or +size{K,M,G} (20979712-41943039, default 41943039): +2G
Partition 7 of type Linux and of size 2 GiB is set
Command (m for help):
Command (m for help): n
All primary partitions are in use
Adding logical partition 8
First sector (25176064-41943039, default 25176064):
Using default value 25176064
Last sector, +sectors or +size{K,M,G} (25176064-41943039, default 41943039): +2G
Partition 8 of type Linux and of size 2 GiB is set
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@localhost ~]# partprobe /dev/sdb
GPT 파티션 생성
# gdisk [디스크명]
GPT 파티션 생성
디스크 정보를 시스템에 등록
# partprobe [디스크명]
파티션 정보 변경사항에 대해 현재 시스템에게 알려야하기 때문에, 파티션 정보 변경 이후 반드시 사용해줘야 함
format - file system을 사용할 수 있게 구조를 만들어주는 과정
포맷을 하면 내용이 왜 지워질까❓ 기존 구조에 새로운 구조 자체를 덮어버리기때문에
파일시스템을 포맷하는 명령어
# mkfs -t [파일시스템] [옵션] [파티션명]
파티션 1~3 ext4로 포맷
# 파티션 1 ext4로 포맷하는 과정만 명시
[root@localhost ~]# mkfs -t ext4 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
131072 inodes, 524288 blocks
26214 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912
Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done
# mkfs.[파일시스템] [옵션] [파티션명]
파티션 5~8 xfs로 포맷
# 파티션 5 xfs로 포맷하는 과정만 명시
[root@localhost ~]# mkfs.xfs /dev/sdb5
meta-data=/dev/sdb5 isize=512 agcount=4, agsize=131072 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=524288, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
파일시스템 종류는 mkfs -t 입력-> TAB 2번 or mkfs. 입력-> TAB 2번으로 확인할 수 있음
디스크와 같은 물리적인 장치를 특정 위치(디렉토리)와 연결시켜주는 과정
마운트 실행 및 수동 마운트
# mount [장치명] [마운트포인트(path)]
/mnt/disk1~3 에 파티션 1~3 을 각각 수동 마운트
# 파티션 1 마운트만 명시
[root@localhost ~]# mount /dev/sdb1 /mnt/disk1
# 마운트된 결과 확인
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 60G 0 disk
├─sda1 8:1 0 4G 0 part [SWAP]
└─sda2 8:2 0 56G 0 part /
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 2G 0 part /mnt/disk1
├─sdb2 8:18 0 2G 0 part /mnt/disk2
├─sdb3 8:19 0 2G 0 part /mnt/disk3
├─sdb4 8:20 0 1K 0 part
├─sdb5 8:21 0 2G 0 part
├─sdb6 8:22 0 2G 0 part
├─sdb7 8:23 0 2G 0 part
└─sdb8 8:24 0 2G 0 part
sr0 11:0 1 1024M 0 rom
# 통로역할을 하게 되어 기존 파일은 보이지 않음
[root@localhost ~]# ls /mnt/disk1
lost+found
마운트 해제
# umount [장치명] [마운트포인트(path)]
수동 마운트는 메모리에 남기 때문에 전원이 꺼지면 마운트가 사라지게 됨. 영구적으로 마운트하기 위해선 /etc/fstab 파일을 수정해야함
# /etc/fstab에 추가한 내용
# 장치명 마운트위치 파일시스템명 옵션 덤프여부 파일시스템체크순서
"abc08951-c39c-4ada-84ad-a0446db6f986" /mnt/disk1 xfs defaults 1 1
/dev/sdb2 /mnt/disk2 xfs defaults 1 1
/dev/sdb3 /mnt/disk3 xfs defaults 1 1
재부팅해야 마운트가 되지만, mount -a 명령어를 통해 재부팅 없이 가능
/etc/fstab 에 추가한 내용을 모두 삭제
RAM이 가득 찼을 경우 때 시스템에서 메모리 자원이 더 필요한 경우, 메모리의 비활성화된 항목들(할당된지 가장 오래되고 사용빈도수가 낮은 프로세스)이 swap으로 이동 => 빠른 속도인 RAM에서 더 많은 공간을 사용할 수 있게 해줌
스왑공간 확인
[root@localhost ~]# free
total used free shared buff/cache available
Mem: 2047700 369756 1332280 9552 345664 1489340
Swap: 4194300 0 4194300
스왑파일시스템 생성
# mkswap [옵션] [파티션명]
[root@localhost ~]# mkswap /dev/sdb1
Setting up swapspace version 1, size = 3145724 KiB
no label, UUID=1d14ec1f-5ab5-497c-90e0-c8d5c67d8c3e
수동 스왑 마운트
# swapon [파티션명]
[root@localhost ~]# swapon -s
Filename Type Size Used Priority
/dev/sda1 partition 4194300 0 -1
sda1이 스왑으로 사용중
수동 스왑 마운트 해제
# swapoff [파티션명]
/etc/fstab 파일을 수정
# /etc/fstab에 추가한 내용
# 장치명 마운트위치 파일시스템명 옵션 덤프여부 파일시스템체크순서
UUID="0c07e4f0-3e6a-43d6-bf4f-0fe722eb09ad" swap swap defaults 0 0
/dev/sdb3 swap swap defaults 0 0