https://docs.vmware.com/kr/VMware-vSphere/index.html

 

VMware vSphere 설명서

VMware vSphere는 VMware의 가상화 플랫폼으로이며 데이터 센터를 CPU, 스토리지 및 네트워킹 리소스를 포함하는 집계된 컴퓨팅 인프라로 변환합니다. vSphere는 이러한 인프라를 통합 운영 환경으로 관

docs.vmware.com

 

UEFI 및 BIOS는 하드웨어를 초기화하고 운영 체제를 로드하기 위해 시작하는 동안 사용되는 2가지 유형의 메인보드 펌웨어로 장치 부팅 우선 순위를 결정하고 사용자가 하드웨어 및 소프트웨어 설정을 사용자 지정할 수 있다.

두 펌웨어 유형 모두 동일한 용도로 사용되지만 UEFI가 BIOS보다 최신 버전이며 더 많은 사용자 지정 옵션과 기능을 제공한다.

 

UEFI란?

UEFI(Unified Extensible Firmware Interface)는 통합 확장 가능 펌웨어 인터페이스 2007년 Windows가 Windows Vista 서비스 팩 1 및 Windows 7, Windows Server 2008 R2 출시 된 이후 컴퓨터의 레거시 BIOS를 점진적으로 대체하는 최신 펌웨어이다. 

 

UEFI를 만드는 주된 목적은 BIOS의 한계를 극복하고 시스템 부팅/종료 시간을 단축하는 것과 UEFI는 GPT 파티셔닝 체계를 사용하고 훨씬 더 큰 저장 용량(2.2TB 이상)을 지원하고 UEFI는 Secure Boot 기능으로 더 나은 보안을 제공하여 승인되지 않은 (멀웨어) 부팅되는 것을 방지와 네트워킹 기능 지원으로 원격문제 해결 및 구성에 유용하다. 

그러나 단점은 보안 부팅이 다른 OS를 서명되지 않은 앱으로 취급하기 때문에 이중 부팅을 방지한다는 것이다.

UEFI는 32비트 또는 64비트 모드에서 실행되므로 그래픽 사용자 인터페이스를 제공할 수 있다 .

[이미지 출처: EaseUS(https://www.easeus.co.kr/partition-manager-software/uefi-vs-bios.html)]

BIOS란?

BIOS(Basic Input/Output System)는 1980년대에 개발되어 EPROM(Erasable Programmable Read-Only Memory)을 사용하고 보드에 납땜이 된 상태라 변경이 쉽지 않았으나 기술이 발전되어 1990년대부터 다시 기록할 수 있는 EEPROM(Electrically EPROM)을 사용하며 발전하고 개선되었지만 현재는 BIOS가 아닌 UEFI를 사용하여 사라질 예정이다.

 

BIOS의 목적은 CMOS 칩에 저장된 설정을 확인하여 사용자가 원하는 시스템 실행 방법과 초기화할 장치(CPU, GPU , RAM 등)를 결정하는 것으로 장치 확인 후 부팅전 하드웨어를 한번 초기화하여 사용 준비하게 하고 BIOS는 부팅 가능한 장치를 찾고 OS에 대한 제어를 수행한다.

BIOS는 16비트 모드에서 작동하며 펌웨어 ROM에서 읽고 실행할 수 있는 코드의 양도 제한되어 부팅/종료시간도 느리다. 펌웨어는 MBR 파티셔닝 체계를 사용 하고 최대 2TB까지만 저장 장치를 지원합니다.

[이미지 출처: EaseUS(https://www.easeus.co.kr/partition-manager-software/uefi-vs-bios.html)]

[BIOS vs UEFI]

구분 BIOS
(Basic Input/Output System)
UEFI
(Unified Extensible Firmware Interface)
출시일 1980년대 1990년대 후반
작동 모드 16 비트 32 비트/ 64 비트
사용자 인터페이스 키보드를 사용한 기본 UI 제공 마우스를 지원하는 사용자 친화적인 그래픽 UI 제공
파티션 지원 최대 4개의 물리적 파티션 최대 128개의 물리적 파티션
파티션 크기 제한 2TB 18EB(엑사바이트 : 1,880만 TB)
성능 16비트 시스템에서 가장 잘 수행 BIOS에 비해 부팅 시간이 상항히 빠르고 성능도 향상
저장 메인보드의 전용 침에 저장된 시스템 초기화 정보 하드디스크의 .efi파일에 저장된 시스템 초기화 정보
보안 비밀번호 보안 보안 부팅 가능
(각 부팅 소프트웨어, 드라이버 및 OS의 서명을 확인하여 서명이 유효한지 확인 후 OS가 동작)

BIOS와 UEFI 차이점 [이미지 출처: EaseUS]

[MBR vs GPT]

구분 MBR GPT
저장 공간 최대 2TB의 저장 용량을 지원 사용 가능한 모든 저장 용량을 지원
(2TB보다 작거나 클 수 있으며 최대 18EB까지)
파티션 수량 디스크 1개에 최대 4개의 주 파티션 또는
주  파티션 3개 + 확장 파티션 을 통한 추가 파티션 생성 가능
디스크 1개에 최대 128개 파티션을 생성 가능
데이터 보안 파티셔닝 및 부팅 데이터를 한 곳에 저장하여 데이터가 손상되면 검색할 수 없다. 디스크 전체에 파티션 정보를 여러 복사본으로 저장. 데이터가 손상된 경우에도 다시 가져올 수 있다.
지원되는 부팅 모드 레거시 BIOS 부팅 모드 사용 UEFI 부팅 모드 사용
기타 .부팅 파티션을 1개만 지정 가능
.확장 및 논리 파티션은 부팅 파티션 불가
.대부분의 펌웨어/OS에서 사용 가능
.32bit Windows 및 기본 BIOS를 사용하는 시스템에서는 파티션 내용 조회 불가
.일부 과거 버전의 OS에서는 부팅 파티션으로 사용 불가

 

MBR
GPT 파티션의 맨 앞에는 Protective MBR 이라는 여유 공간을 두게 되는데, GPT 파티션을 인식하지 못하는 시스템에서 해당 디스크가 비어 있는 것으로 착각하고 GPT 디스크를 수정하는 것을 방지하기 위한 것이다

1. 펌웨어 종류 확인 방법

요즘 메인보드는 UEFI 만 또는 UEFI와 BIOS가 혼합된 상태로 제공되며 부팅모드 설정화면에서도 확인 가능하다.

두 가지를 구별하는 다른 방법은 설정 화면에 따라 마우스 커서가 나타나거나 메뉴가 모두 텍스트로 표시된다. BIOS에 더 익숙한 사람들을 혼동하지 않으려 고 일부 제조업체는 외관상 두 가지 모드를 구별하지 않는 경우도 있으며 컴퓨터가 UEFI 또는 BIOS를 사용하는지 여부를 확인하는 검증 된 방법이 필요하다.


1)Windows "시스템 정보"에서 확인방법

- "Windows + R"키를 동시에 눌러 실행 창을 열고 MSInfo32 입력하면 시스템 정보 창이 열립니다.

- 오른쪽 창에서 "BIOS 모드"를 찾는다.
  → BIOS를 사용하는 경우 레거시가 UEFI를 사용하는 경우 UEFI가 표시된다.

부팅모드 확인 [이미지 출처: EaseUS]
디스크 관리자에서 확인 디스크 선택(디스크 0) > 속성
볼륨 > "파티션 형식"에서 GPT 확인

2)Windows "setupact.log"에서 확인방법

Windows 파일 탐색기에서 setupact.log 파일을 확인하면 컴퓨터에서 사용 중인 BIOS 모드를 알 수 있습니

- "Windows + E"키를 동시에 눌러 "파일 탐색기"를 열고 C:\Windows\Panther 폴더로 이동

- setupact.log 텍스트 파일을 메모장으로 연다

- Ctrl + F를 눌러 메모장에서 찾기창을 열고 Detected Boot Environment를 입력후 다음찾기 클릭

  → 결과에 EFI 또는 BIOS 단어를 확인한다
      Callback_BootEnvironmentDetect: Detected Boot Environment : BIOS
      Callback_BootEnvironmentDetect: Detected Boot Environment : EFI

3)Linux 명령어로 확인

parted -l 명령어로 확인

 

4)UEFI/BIOS 부트모드에서 확인방법

하드웨어 제조사마다 다르며 일반적으로 F2 키를 눌러 기존 BIOS에 액세스 가능하다.
(그외 F1,  F10, F11, F12, Esc, Delete 키를 사용하는 경우도 있음)

-컴퓨터를 다시 시작
-BIOS 설정 유틸리티 화면이 나타날 때까지 "F2" 키를 계속 누른다.

 (일반적으로 서버 및 PC는 "Del" 키를 노트북은 "F2" 키를 사용한다. 안되면 다른 키를 시도)
-Boot 선택 > Boot 탭에서 위쪽 및 아래쪽 화살표로 UEFI 모드 나 Legacy모드를 선택 > Enter > Exit > Yes

부팅모드 확인 [이미지 출처: EaseUS]

 

2. UEFI 펌웨어 사용을 위한 파티션 변경(MBR → GPT)

-BIOS를 UEFI로 변경하였을때 시스템 부팅시 문제를 예방하려면 파티션을 MBR(BIOS)에서 GPT(UEFI)로 변환해야 한다.

-디스크에 어떠한 파티션 또는 볼륨도 포함되어 있지 않아야 디스크를 MBR에서 GPT 파티션으로 변경할 수 있다.

-또, 디스크를 변환하기 전에 모든 데이터를 백업하고 디스크에 액세스하는 모든 프로그램을 닫는다.

 

1)Windows 인터페이스로 변환
-GPT 디스크로 변환하고자 하는 기본 MBR 디스크의 모든 데이터를 백업 또는 이동한다.
-디스크에 파티션 또는 볼륨이 포함된 경우 각각을 마우스 오른쪽 단추로 클릭 후 파티션 삭제 또는 볼륨 삭제를 클릭한다.
-GPT 디스크로 변경하고자 하는 MBR 디스크를 마우스 오른쪽 단추로 클릭한 후 "GPT 디스크로 변환"을 클릭한다.

 

2)CLI(명령줄)로  변환
빈 MBR 디스크를 GPT 디스크로 변환하려면 MBR2GPT.EXE 도구를 사용할 수도 있지만 약간 복잡하다.

자세한 내용은 MBR 파티션을 GPT로 변환(https://learn.microsoft.com/ko-kr/windows/deployment/mbr-to-gpt)을 참조
-GPT 디스크로 변환하고자 하는 기본 MBR 디스크의 모든 데이터를 백업 또는 이동한다.
-"Windows +R" 키 동시에 눌러서 "diskpart"를 입력후 Enter (디스크에 파티션이나 볼륨이 없는 경우 6단계까지 건너뜀)
-DISKPART> 에서 "list disk"를 입력하여 서버에 연결된 모든 디스크를 확인 후 Enter (GPT로 변환하려는 디스크 번호를 기록해 둔다)
-DISKPART> 에서 "select disk disknumber"(disknumber는 MBR 디스크 번호)를 입력하여 GPT로 변환하려는 디스크 번호 선택후 Enter 
-DISKPART> 에서 "clean"입력하여 대상 디스크에 있는 모든 파티션을 삭제하고 Enter

-DISKPART> 에서 "convert gpt" 입력하고 Enter.

-DISKPART> 에서 "exit"입력하고 Enter.

명령 설명
list disk 디스크의 목록과 크기, 사용 가능한 공간 크기, 기본 또는 동적 디스크 여부, 디스크의 MBR(마스터 부트 레코드) 또는 GPT(GUID 파티션 테이블) 파티션 스타일 사용 여부 등 정보를 표시합니다. 별표(*)가 표시된 디스크는 포커스가 설정됩니다.
select disk disknumber disknumber는 MBR 디스크 번호를 의미함
디스크 번호가 disknumber인 지정된 디스크를 선택하고 포커스를 설정합니다.
clean 포커스가 설정된 디스크에서 모든 파티션 또는 볼륨을 삭제합니다.
convert gpt MBR(마스터 부트 레코드) 파티션 스타일의 비어 있는 기본 디스크를 GPT(GUID 파티션 테이블) 파티션 스타일의 기본 디스크로 변환합니다.

 

아바마 노드의 하드웨어 Componet 정상인지 확인
(mapall 명령어를 사용하여 전체 노드의 하드웨어 상태 확인 필요)

root@ava0-util:~/#: omreport chassis
Health
 
Main System Chassis
 
SEVERITY : COMPONENT
Ok       : Fans
Ok       : Intrusion
Ok       : Memory
Ok       : Power Supplies
Ok       : Processors
Ok       : Temperatures
Ok       : Voltages
Ok       : Hardware Log
Ok       : Batteries
 
For further help, type the command followed by -?


아바마 노드의 디스크 상태 확인
(mapall 명령어를 사용하여 전체 노드의 하드웨어 상태 확인 필요)

root@ava0-util:~/#: omreport storage pdisk controller=0
List of Physical Disks on Controller PERC 6/i Integrated (Embedded)
 
Controller PERC 6/i Integrated (Embedded)
ID                        : 0:0:0
Status                    : Ok
Name                      : Physical Disk 0:0:0
State                     : Online
Failure Predicted         : No
Progress                  : Not Applicable
Type                      : SAS
Capacity                  : 278.88 GB (299439751168 bytes)
Used RAID Disk Space      : 278.88 GB (299439751168 bytes)
Available RAID Disk Space : 0.00 GB (0 bytes)
Hot Spare                 : No
Vendor ID                 : DELL(tm)
Product ID                : ST3300656SS
Revision                  : HS0A
Serial No.                : 3QP132--
Negotiated Speed          : Not Available
Capable Speed             : Not Available
Manufacture Day           : 01
Manufacture Week          : 04
Manufacture Year          : 2009
SAS Address               : 5000C5000F97EED1
 
ID                        : 0:0:1
Status                    : Ok
Name                      : Physical Disk 0:0:1
State                     : Online
Failure Predicted         : No
Progress                  : Not Applicable
Type                      : SAS
Capacity                  : 278.88 GB (299439751168 bytes)
Used RAID Disk Space      : 278.88 GB (299439751168 bytes)
Available RAID Disk Space : 0.00 GB (0 bytes)
Hot Spare                 : No
Vendor ID                 : DELL(tm)
Product ID                : ST3300656SS
Revision                  : HS0A
Serial No.                : 3QP132--
Negotiated Speed          : Not Available
Capable Speed             : Not Available
Manufacture Day           : 01
Manufacture Week          : 04
Manufacture Year          : 2009
SAS Address               : 5000C5000F97EE65

 

최근 체크포인트 정상 생성 Validation 정상 확인

root@ava0-util:~/#: cplist
cp.20130307030013 Thu Mar  7 12:00:13 2013   valid rol ---  nodes  13/13 stripes  15039
cp.20130307074458 Thu Mar  7 16:44:58 2013   valid --- ---  nodes  13/13 stripes  15063

 

노드가 Online 상태인지 확인하고 Offline 스트라이프가 있는지 확인

root@ava0-util:~/#: status.dpn
Thu Mar  7 18:09:02 KST 2013  [AVA0-UTIL] Thu Mar  7 09:09:02 2013 UTC (Initialized Wed Feb 27 09:50:52 2013 UTC)
Node   IP Address     Version   State   Runlevel  Srvr+Root+User Dis Suspend Load UsedMB Errlen  %Full   Percent Full and Stripe Status by Disk
0.0  10.0.0.131   5.0.4-30  ONLINE fullaccess mhpu+0hpu+0hpu   0 false   0.08 3940400   141086  21.4%  22%(onl:287) 20%(onl:289) 21%(onl:287) 21%(onl:288)
0.1  10.0.0.132   5.0.4-30  ONLINE fullaccess mhpu+0hpu+0hpu   0 false   0.03 6004420   143390  20.4%  21%(onl:291) 20%(onl:295) 20%(onl:293) 20%(onl:292)
0.2  10.0.0.133   5.0.4-30  ONLINE fullaccess mhpu+0hpu+0hpu   0 false   0.58 3939484   143466  21.8%  23%(onl:290) 21%(onl:290) 21%(onl:293) 21%(onl:293)
0.3  10.0.0.134   5.0.4-30  ONLINE fullaccess mhpu+0hpu+0hpu   0 false   0.08 3935416   147986  22.0%  23%(onl:297) 21%(onl:288) 21%(onl:292) 21%(onl:293)
0.4  10.0.0.135   5.0.4-30  ONLINE fullaccess mhpu+0hpu+0hpu   0 false   0.22 3936032   138754  20.8%  21%(onl:287) 20%(onl:278) 20%(onl:278) 20%(onl:283)
0.5  10.0.0.136   5.0.4-30  ONLINE fullaccess mhpu+0hpu+0hpu   0 false   0.23 3945020   144696  20.4%  21%(onl:295) 20%(onl:292) 20%(onl:294) 20%(onl:291)
0.6  10.0.0.137   5.0.4-30  ONLINE fullaccess mhpu+0hpu+0hpu   1 false   0.05 3940528   141408  20.0%  21%(onl:290) 19%(onl:288) 19%(onl:290) 19%(onl:287)
0.7  10.0.0.138   5.0.4-30  ONLINE fullaccess mhpu+0hpu+0hpu   0 false   0.02 5999696   141607  20.1%  21%(onl:288) 19%(onl:290) 19%(onl:287) 19%(onl:290)
0.8  10.0.0.139   5.0.4-30  ONLINE fullaccess mhpu+0hpu+0hpu   0 false   0.03 5998768   141663  20.0%  21%(onl:287) 19%(onl:287) 19%(onl:285) 19%(onl:289)
0.9  10.0.0.140   5.0.4-30  ONLINE fullaccess mhpu+0hpu+0hpu   0 false   0.03 5997128   143490  20.4%  21%(onl:294) 20%(onl:287) 19%(onl:296) 20%(onl:295)
0.A  10.0.0.141   5.0.4-30  ONLINE fullaccess mhpu+0hpu+0hpu   0 false   0.22 5997392   144134  20.8%  21%(onl:295) 20%(onl:297) 20%(onl:293) 20%(onl:297)
0.B  10.0.0.142   5.0.4-30  ONLINE fullaccess mhpu+0hpu+0hpu   0 false   0.03 6000868   140330  19.8%  21%(onl:287) 19%(onl:285) 19%(onl:285) 19%(onl:284)
0.C  10.0.0.143   5.0.4-30  ONLINE fullaccess mhpu+0hpu+0hpu   0 false   0.21 5999676   144497  20.4%  21%(onl:293) 20%(onl:292) 20%(onl:288) 20%(onl:291)
Srvr+Root+User Modes = migrate + hfswriteable + persistwriteable + useraccntwriteable
 
All reported states=(ONLINE), runlevels=(fullaccess), modes=(mhpu+0hpu+0hpu)
System-Status: ok
Access-Status: full
 
Last checkpoint: cp.20130307074458 finished Thu Mar  7 16:45:17 2013 after 00m 18s (OK)
Last GC: finished Thu Mar  7 09:18:58 2013 after 03m 58s >> recovered 13.55 GB (OK)
Last hfscheck: finished Thu Mar  7 12:22:57 2013 after 22m 25s >> checked 6521 of 6521 stripes (OK)
 
Maintenance windows scheduler capacity profile is active.
  The backup window is currently running.
  Next backup window start time: Fri Mar  8 17:00:00 2013 KST
  Next blackout window start time: Fri Mar  8 09:00:00 2013 KST
  Next maintenance window start time: Fri Mar  8 12:00:00 2013 KST

 

아바마 서비스 상태 확인

root@ava0-util:~/#: dpnctl status
dpnctl: INFO: gsan status: ready
dpnctl: INFO: MCS status: up.
dpnctl: INFO: EMS status: up.
dpnctl: INFO: Backup scheduler status: up.
dpnctl: INFO: dtlt status: up.
dpnctl: INFO: Maintenance windows scheduler status: enabled.
dpnctl: INFO: Maintenance cron jobs status: enabled.
dpnctl: INFO: Unattended startup status: disabled.

 

아바마 노드의 Filesystem 공간이 90% 미만인지 확인 (data01 ~ data04 해당)

root@ava0-util:~/#: mapall --parallel df -h
Using /usr/local/avamar/var/probe.xml
(0.0) ssh  -x  root@10.0.0.131 'df -h'
(0.1) ssh  -x  root@10.0.0.132 'df -h'
(0.2) ssh  -x  root@10.0.0.133 'df -h'
(0.3) ssh  -x  root@10.0.0.134 'df -h'
(0.4) ssh  -x  root@10.0.0.135 'df -h'
(0.5) ssh  -x  root@10.0.0.136 'df -h'
(0.6) ssh  -x  root@10.0.0.137 'df -h'
(0.7) ssh  -x  root@10.0.0.138 'df -h'
(0.8) ssh  -x  root@10.0.0.139 'df -h'
(0.9) ssh  -x  root@10.0.0.140 'df -h'
(0.10) ssh  -x  root@10.0.0.141 'df -h'
(0.11) ssh  -x  root@10.0.0.142 'df -h'
(0.12) ssh  -x  root@10.0.0.143 'df -h'
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda5             7.8G  2.6G  4.9G  35% /
/dev/sda1             122M   13M  103M  11% /boot
/dev/sda9             316G   72G  228G  24% /data01
/dev/sdb1             338G   69G  252G  22% /data02
/dev/sdc1             338G   70G  251G  22% /data03
/dev/sdd1             338G   69G  252G  22% /data04
none                  2.0G     0  2.0G   0% /dev/shm
/dev/sda8             1.5G   88M  1.3G   7% /var
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda5             7.8G  2.3G  5.2G  31% /
/dev/sda1             122M   13M  103M  11% /boot
/dev/sda9             316G   73G  226G  25% /data01
/dev/sdb1             338G   70G  251G  22% /data02
/dev/sdc1             338G   71G  250G  22% /data03
/dev/sdd1             338G   71G  250G  23% /data04
none                  2.0G     0  2.0G   0% /dev/shm
/dev/sda8             1.5G   88M  1.3G   7% /var
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda5             7.9G  2.1G  5.5G  28% /
/dev/sda1             122M   13M  103M  12% /boot
/dev/sda9             321G   72G  249G  23% /data01
/dev/sdb1             344G   71G  273G  21% /data02
/dev/sdc1             344G   71G  273G  21% /data03
/dev/sdd1             344G   71G  273G  21% /data04
none                  3.0G     0  3.0G   0% /dev/shm
/dev/sda8             1.5G   84M  1.4G   6% /var
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda5             7.8G  2.3G  5.2G  31% /
/dev/sda1             122M   13M  103M  11% /boot
/dev/sda9             316G   74G  226G  25% /data01
/dev/sdb1             338G   71G  250G  23% /data02
/dev/sdc1             338G   71G  250G  23% /data03
/dev/sdd1             338G   71G  250G  22% /data04
none                  2.0G     0  2.0G   0% /dev/shm
/dev/sda8             1.5G   94M  1.3G   7% /var
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda5             7.8G  2.3G  5.2G  31% /
/dev/sda1             122M   13M  103M  11% /boot
/dev/sda9             316G   70G  230G  24% /data01
/dev/sdb1             338G   67G  254G  21% /data02
/dev/sdc1             338G   67G  254G  21% /data03
/dev/sdd1             338G   67G  254G  21% /data04
none                  2.0G     0  2.0G   0% /dev/shm
/dev/sda8             1.5G   88M  1.3G   7% /var
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda5             7.9G  2.3G  5.3G  30% /
/dev/sda1             122M   13M  103M  11% /boot
/dev/sda9             321G   70G  251G  22% /data01
/dev/sdb1             344G   70G  274G  21% /data02
/dev/sdc1             344G   70G  274G  21% /data03
/dev/sdd1             344G   70G  274G  21% /data04
none                  2.0G     0  2.0G   0% /dev/shm
/dev/sda8             1.5G   86M  1.4G   6% /var
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda5             7.9G  2.3G  5.3G  30% /
/dev/sda1             122M   13M  103M  11% /boot
/dev/sda9             321G   74G  248G  23% /data01
/dev/sdb1             344G   70G  274G  21% /data02
/dev/sdc1             344G   71G  273G  21% /data03
/dev/sdd1             344G   71G  273G  21% /data04
none                  2.0G     0  2.0G   0% /dev/shm
/dev/sda8             1.5G   90M  1.4G   7% /var
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda5             7.9G  2.2G  5.4G  29% /
/dev/sda1             122M   13M  103M  12% /boot
/dev/sda9             321G   70G  252G  22% /data01
/dev/sdb1             344G   71G  273G  21% /data02
/dev/sdc1             344G   70G  274G  21% /data03
/dev/sdd1             344G   70G  274G  21% /data04
none                  3.0G     0  3.0G   0% /dev/shm
/dev/sda8             1.5G   83M  1.4G   6% /var
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda5             7.9G  2.2G  5.4G  29% /
/dev/sda1             122M   13M  103M  12% /boot
/dev/sda9             321G   70G  251G  22% /data01
/dev/sdb1             344G   70G  274G  21% /data02
/dev/sdc1             344G   69G  275G  21% /data03
/dev/sdd1             344G   70G  274G  21% /data04
none                  3.0G     0  3.0G   0% /dev/shm
/dev/sda8             1.5G   83M  1.4G   6% /var
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda5             7.9G  2.2G  5.4G  29% /
/dev/sda1             122M   13M  103M  12% /boot
/dev/sda9             321G   71G  251G  22% /data01
/dev/sdb1             344G   70G  274G  21% /data02
/dev/sdc1             344G   70G  274G  21% /data03
/dev/sdd1             344G   71G  274G  21% /data04
none                  3.0G     0  3.0G   0% /dev/shm
/dev/sda8             1.5G   83M  1.4G   6% /var
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda5             7.9G  2.2G  5.4G  29% /
/dev/sda1             122M   13M  103M  12% /boot
/dev/sda9             321G   73G  249G  23% /data01
/dev/sdb1             344G   72G  272G  21% /data02
/dev/sdc1             344G   72G  272G  21% /data03
/dev/sdd1             344G   72G  272G  21% /data04
none                  3.0G     0  3.0G   0% /dev/shm
/dev/sda8             1.5G   83M  1.4G   6% /var
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda5             7.9G  2.2G  5.4G  29% /
/dev/sda1             122M   13M  103M  12% /boot
/dev/sda9             321G   71G  250G  23% /data01
/dev/sdb1             344G   71G  273G  21% /data02
/dev/sdc1             344G   71G  273G  21% /data03
/dev/sdd1             344G   72G  272G  21% /data04
none                  3.0G     0  3.0G   0% /dev/shm
/dev/sda8             1.5G   83M  1.4G   6% /var
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda5             7.9G  2.2G  5.4G  29% /
/dev/sda1             122M   13M  103M  12% /boot
/dev/sda9             321G   69G  252G  22% /data01
/dev/sdb1             344G   69G  275G  20% /data02
/dev/sdc1             344G   69G  275G  21% /data03
/dev/sdd1             344G   69G  275G  20% /data04
none                  3.0G     0  3.0G   0% /dev/shm
/dev/sda8             1.5G   83M  1.4G   6% /var

 

 
 
 

1.Linux OS란

OS는 내부적으로는 컴퓨팅 하드웨어 자원을 관리, 제어하고 사용자에게는 하드웨어를 편하게 사용할 수 있도록 화면, 명령어(인터페이스)를 제공한다.

 

1)기능 : 프로세스 관리, 인터럽트, 메모리 관리, 파일 시스템, 장치드라이버, 네트워크, 보안, 입출력
2)목적

. 다양한 HW(CPU, Memory, Disk, Keyboard, Mouse, 등)를 연결 (확장성)
. 프로그램 개발시 HW이해가 필요한데 이해하는 수고를 덜어줌 (편의성) 
. 안정적인 HW자원을 활용하는 Multi Tasking, Time Sharing 기능 등 제공 (효율성)

3)구성 요소

 

구성요소 설명
Kernel .각종 자원(CPU, Memory, Disk 등) 관리
.여러 명령어에 대한 CPU Scheduling
.부팅 후 종료 시까지 메모리의 적재
Shell .사용자 및 응용프로그램과 OS의 인터페이스를 담당
.CLI(Command Line Interface), GUI(Graphic User Interface) 존재
File System .데이터의 저장,수정, 삭제를 가능하게 해줌
.물리적 디스크의 용량을 효율적으로 사용
.저장된 데이터에 접근 할 수 있는 방법 제공

 

 

 

 

2.커널(Kernel)

OS의 기본 구성 요소로 커널이 없으면 OS는 작동하지 않는다. 커널은 시스템 리소스를 관리하고 하드웨어와 통신하며 메모리, 프로세스, 파일 관리를 담당한다.

 

1)기능

-프로세스 처리에 필요한 HW자원을 관리하는 OS의 핵심 부분
-서버의 부팅 시부터 종료 시까지 계속 Memory에 상주해 있는 프로그램
2)역할

-자원 관리
 . 한정된 시스템 자원(CPU, Memory)을 효율적으로 관리하여 프로그램의 실행을 원활하게 함
 . Scheduling : 프로세스가 처리될 순서를 관리
-하드웨어 추상화(hardware abstraction)
 . 다양하고 복잡한 하드웨어를 제어하기 위해 추상화하여 일관성 있는 인터페이스 제공
  (※추상화 : 같은 종류의 장비에 대해 공통의 명령어를 제공하는 디바이스 드라이버 소프트웨어)
-보안
 . Kernel 영역과 사용자 영역을 분리항 사용자 프로세스는 커널 영역에 접근하지 못하게 함
 . 사용자 프로세스는 System Call을 통해 간접적으로 커널을 호출

3)동작

-파일 시스템: Disk를 File이라는 개념으로 제공


-작업 관리자: 물리적 자원(CPU)를 작업(Task)이라는 추상적 자원으로 제공


-메모리 관리자: Memory를 세그먼트나 페이지 개념으로 제공


-디바이스 관리자: 각종 장치의 디바이스 드라이버를 통해 일관되게 접근하도록 제공

 

-네트워크 관리자: 네트워크 장치를 소켓이라는 개념으로 제공

 

 

 

①프로세스는 System Call(시스템호출)을 통해 커널을 호출한다.
②하드웨어는 인터럽트를 통해 커널에 신호를 보낸다.
③그 사이에서 작업관리자(CPU 관리), 메모리관리자, 파일시스템(파일시스템관리), 디바이스관리자, 네트워크관리자가 Kernel의 역할을 수행한다.

※리눅스 Kernel 위치 : /usr/src/kernels (ex : /usr/src/kernels/3.10.0-862.el7.x86_64)

 

4)종류

단일형 커널(monolithic kernel), 마이크로커널(microkernel), 혼합형 커널(hybrid kernel), 엑소커널(exokernel), 나노커널(nanokernel) 등 여러종류가 있지만, 그 중 단일형 커널, 마이크로커널, 혼합형 커널이 많이 알려져 있다.

단일형 커널과 마이크로 커널 구조

구분 설명
단일형 커널
(monolithic kernel)
*개발자의 단순함에서 시작, 커널 내부에서의 프로시저 호출등이 간단하게 이루어진다.
.입출력, 네트웍크, 디바이스 자원 등 운영체제에서 일어나는 모든 일들을 1개의 커널이 모두 처리
.속도가 빠르고 디자인도 편리하지만, 커널의 크기가 증가함
.linux,  보통의 Unix계통, MS-DOS, Windows 9x(95, 98, ME), Mac OS 8.6 이하 버전 이 대상임
마이크로커널
(microkernel)
*유연성과 모듈화 감안 설계, 메시지 통신 방식의 비효율성에 의해 성능상의 단점을 가진다.
.시스템호출 같은 서비스, 디바이스 관리를 제외하여 안정성을 높이고 커널 크기도 줄인 디자인 방식
.안정성이 높고 보안도 높아지지만 전반적인 성능은 저하됨, 멀웨어 체크시 CPU과점을 함
.Mach, Minix, QNX, GNU Hurd, 심비안 이 대상임
혼합형 커널
(hybrid kernel)
.단일형 커널 + 마이크로터널 디자인
.NT 커널(Windows NT 3.1, 3.5, 4.0, 2000, XP, Vista, 7, 8, 8.1, 10, Windows Server 2003, 2003 R2, 2008, 2008 R2, 2012, 2012 R2, 2016), XNU(다윈[Darwin]커널과 이에 기반을 둔 Mac OS, iOS 등-BSD의 단일형 커널과 마하커널을 서로 합친 형태), BeOS, Plan 9

4)파라미터(Parameter)

리눅스에서 사용되는 시스템 변수들을 의미하며, 커널 변수 값을 제어하여 시스템을 운영 용도에 맞게 최적화 할 수 있는 설정으로
커널 매개변수의 위치는 /proc/sys 디렉토리 밑에 존재하고 커널 파라미터의 절대경로 수정을 통해 설정 변경도 가능하지만

sysctl을 통해서 쉽게 설정할 수 있다.

-시스템 최적화를 위해 커널에서 사용하는 변수의 값을 제어
-응용프로그램이나 DB에 따라 권고 파라미터 제공

 

[파라미터 확인 및 변경방법]

①확인 방법

# sysctl -a
# sysctl | grep -w

②변경 방법

- 현재 파라미터 변경(리부팅 후에는 원복)
# sysctl -w [파라미터명]=[값]    (예: # sysctl -w kernel.panic=10)
- 리부팅 후에도 반영되도록 설정(현재 파라미터는 변경되지 않음)
# vi /etc/sysctl.conf       ([파라미터명]=[값] 포맷으로 수정 또는 추가)
- 수정된 sysctl.conf내의 값을 불러와서 적용
# sysctl -p

※-p 옵션 : /etc/sysctl.conf만 변경시 적용
  --system 옵션 : /etc/sysctl.conf설정외 연관된 모든 경로의 설정에 따로 추가시 적용
            (/run/sysctl.d/*.conf, /etc/sysctl.d/*.conf, /usr/local/lib/sysctl.d/*.conf,
             /lib/sysctl.d/*.conf, /etc/sysctl.conf)

sysctl --system 옵션적용 방법

 

3.쉘(Shell)

운영체제에서 제공하는 명령을 실행하는 프로그램으로 Interpreter(번역기) 역할을 하는 것으로 시스템으로 지원하는 명령어들의 집합을 묶어서 프로그램화한 것이다. CLI(Command Line Interface)와 GUI(Graphic User Interface)가 존재하며 Shell종류는 다양하고, Unix계열도 GUI를 가지고 있다.

1)역할
-리눅스 커널과 사용자 사이에서 인터페이스를 담당
-사용자가 입력하는 명령을 읽어 해석하고 커널에 전달 (command Interpreter)

명령 처리 절차

※ Shell은 사용자의 불편함을 해소하기 위해 만들었으며, 만약 Shell이 없다면 단순히 파일복사를 수행하기 위해서도 프로그램을 직접 짜거나 커널의 해당 명령어(또는함수)를 찾아봐야 할 것이다.

 

2)기능

-사용자가 입력한 명력어를 해석하여 시스템 기능을 실행하거나 다른 프로그램을 실행
-프로그래밍 기능(Shell Script)
-사용자 환경 설정(Shell 변수, 환경 변수)

 

3)종류

Shell
계열
이름 설명 특징
bourne Shell

 Bourne Shell
(sh)
.가장 기본적인 쉘로 유닉스의 초기부터 사용되어 온 쉘이다.
.스크립트를 지원한다.
.단점 : 별칭(alias)이나 히스토리 등의 기능이 없음
.1974년 Stephen Bourne(스티브 본)이 개발한 최초의 쉘(Shell) 이다. 대부분의 리눅스에 기본적으로 설치가 되어있다
.설치 위치 : /bin/sh (프롬프트 : $)
Bourne-again shell 
(bash)
.리눅스에서 가장 많이 사용되는 쉘이다.
.C 쉘과korn shell의 장점을 결합해 작성, Bourne Shell 문법의 명령어 셋을 제공하여 Bourne Shell과 호환되는 쉘로 GNU 프로젝트에 의해 만들어지고 배포된다.
.명령행 편집기능을 제공한다.
.1989본셸을 기반으로 GNU 프로젝트를 위해 Brian Fox'(브라이언 폭스) 가 개발한 쉘이다. Linux 표준 쉘로 채택 (리눅스에서 가장 많이 사용하는 쉘)됨.
.설치 위치:  /bin/bash, /bash/sh (프롬프트 : $)
korn shell
(ksh)
.본 쉘의 명령어를 모두 인식하며, 명령어 히스토리(history) 기능과 엘리어스(alias), 작업 제어 등의 기능이 추가되었다.
.유닉스에서 가장 많이 사용되는 쉘이다.
.명령어 완성 기능, 히스토리 기능 지원한다.
.1983년 벨 연구소의 데이비드 콘이 개발한 유닉스 셸로 유닉스에서 가장 많이 사용되는 본 쉘을 확장한 쉘
.Bourne 쉘의 상위 버젼. Bourne 쉘 및 C 쉘의 좋은 특성들을 결합. 
.설치 위치 : /bin/ksh (프롬프트 : $)

z shell
(zsh)
.Bourne Shell의 확장 버전으로, 지금까지의 수 많은 쉘(Shell) 들의 기능을 포함한 많은 새로운 기능과 플러그인 및 테마 지원을 제공한다 .1990년에 Paul Falstad(폴 폴스타드) 가 zsh의 최초 버전을 작성
.확장형 본쉘, 콘쉘의 재작성 쉘
강력한 history 기능
향상된 명령행 편집 기능
.설치 위치 : /bin/zsh (프롬프트 : #)

C Shell C Shell
(csh)
.C언어 위주의 쉘로 처음 작성되었을 때에는 Bourne Shell이 가지고 있지 못한 기능들(작업제어, 명령어 히스토리 등)을 가지고 있었기 때문에 많이 사용되었다.
.명령행 편집기능을 제공하지 않는다.
.1978년  Bill Joy(빌 조이)가 개발
.본쉘의 사용성을 높인 쉘 대화형 작업에 강점을 지님
.설치 위치 : /bin/csh (프롬프트 : %)
C언어의 특징을 많이 포함함
히스토리, 별명, 작업 제어 등의 기능 포함
대부분의 대형 검퓨터용 유닉스에서, C 쉘 또는 TC 쉘(C 쉘의 확장본)이 보편적으로 사용됨
tc shell,
tee-see-shell
(tcsh)
.C Shell 에서 명령 행 완성과 명령 행 편집 기능을 추가한 것
.일반적인 C 쉘이며 사용자 중심이고 속도가 빠르다.
.1981년 Ken Greer(켄 그리어)가 개발
.csh의 기능을 강화한 쉘
.설치 위치 : /bin/tcsh (프롬프트 : >)
확장 C쉘로, BSD 계열에서 가장 많이 사용
명령어 편집 기능 제공

※ 리눅스 환경에서는 기본적으로 Bourne shell을 기반으로 한 Bash shell 주로 사용되고,

  유닉스에서는 기본적인 본 쉘의 기능을 확장한 korn shell이나 C shell이 많이 사용된다.

Shell별  특징

4)쉘 변경방법
- 현재 사용 중인 쉘 확인하기
   $ echo $SHELL 명령어를 실행하여 현재 사용 중인 쉘을 확인할 수 있다.
- 사용 가능한 쉘 확인하기: 
   $ cat /etc/shells 명령어를 실행하여 시스템에 설치된 사용 가능한 쉘 목록을 확인할 수 있다.
- 새로운 쉘 선택하기: 
   $ chsh 명령어를 실행하여 로그인 쉘을 변경할 수 있다. 
     (예: 새로운 쉘로 Bash를 변경할 경우 #chsh -s /bin/bash)
- 새로운 쉘로 변경 후 로그아웃 및 재로그인

  . 새로운 쉘을 선택하면 로그아웃하고 다시 로그인하면 변경된 쉘을 사용할 수 있다.

※참고로, 쉘을 변경하는 것은 시스템에 영향을 미칠 수 있으므로, 신중하게 선택해야 합니다. 또한, 쉘을 변경하더라도, 이전 쉘에서 작성한 쉘 스크립트나 환경 변수 등은 새로운 쉘에서 사용할 수 없으므로, 필요한 작업을 다시 수행해야 한다.

 

5)필요한 shell 명령

- 현재 사용 중인 쉘의 위치 확인

  $ echo $SHELL

- 사용 가능한 쉘 확인
  $ cat /etc/shells
- 사용자별 로그인시 사용하는 쉘 확인(사용자 로그인 쉘)
  $ cat /etc/passwd

  (예: user01:x:5010:5000:/home/user01 /bin/bash → user01은 bash 쉘사용)

- 현재 사용중인 shell확인, 여러 줄이 나올 경우 echo $$ 결과와 동일한 PID확인

  $ ps $$
- 로그인Shell 변경명령: chsh
  # chsh

6)Shell 명령 실행순서

- Shell에서 명령어 입력을 통해 실행되는 순서
  ①Alias ②Shell 예약어 ③Function ④내장 명령어 ⑤파일시스템 명령

- 실행되는 명령어가 어떤 기능인지 type 명령어로 확인 가능
  # type [명령어]

기능 설명
①Alias  .옵션을 포함한 특정 명령을 짧고 쉬운 명령으로 대체
.위험한 명령을 잘못 발행하는 것을 대비하기 위해 명령어 대체
.# alias 명령어로 현재 shell 세션에 적용된 alias 확인
.예: # alias SHELL='cd /src/root/shell'
     # alias rm='rm -i'
②Shell 예약어 .파일로는 존재하지 않지만 Shell이 특별한 목적을 위해 예약해 둔 단어
.do, while, else 등
.shell 스크립트 작성에 사용
.예: 
while true
do
    sleep 5
    df -h /logs01
done
③Function .일련의 명령어를 함수로 정의
.# set 명령어로 현재 shell 세션에 적용된 function 확인
.예:
function reboot {
    echo "check target is  : $(hostname)"
    echo "Enter HOSTNAME to proceed?"
    read sure
    if [$sure = "$(uname -n)"]; then
       $(which reboot)
    else
       echo Cancelled.
    fi
}
④내장 명령어  .shell에 통합된(Built in) 명령
.일부는 명령어 파일이 /usr/bin에 존재하지만, 실제 수행되는 것은 내장 명령임
.예: cd, echo, exit, fg, history, pwd 등
# find / -name exit
(결과 없음)
.RHEL에서 cd 명령어의 메뉴얼 페이지를 보면 내장 명령에 대한 전체적인 메뉴얼이 출력
$ man cd
⑤파일시스템 명령 .실제 파일로 존재하는 명령
.경로를 지정해 줘야 실행됨
.환경변수 $PATH에 경로가 포함되어 있으면 경로 없이 실행
.$PATH는 왼쪽부터 순차적으로 탐색
.예:
$PATH에 명령어의 경로가 있으면 바로 실행
# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin/bin:/usr/sbin:/usr/bin:/root/bin

#date
Sun Jan 10 20:21:16 KST 2010

$PATH에 명령어의 경로가 없다면 절대 경로 또는 상대 경로까지 입력 필요
# /src/root/shell/CheckTD.sh
또는 
# cd /src/root/shell/
# ./CheckTD.sh

1. 개념

Cron/Crontab은 원하는 시간에 명령(프로그램)을 시키기 위한 데몬이다.
서버는 늘 깨어있다는 것을 이용한 최대한의 활용법이 될 수 있다.

    - 내가 새벽 3시에 서버에 특정 작업을 해줘야하는데 그 때 깨어있을 수 있는가?
    - 또는 30분 간격으로 HDD의 사용량을 운영자에게 알리도록 해야한다면?
    - 매월 초에 자료를 백업 받고 싶다면?

바로 이럴 때 cron은 최고의 해결책을 제시한다.
cron은 항상 지정한 시간이 되었는지 확인을 하여 해당 명령어을 실행하는 것이다.

시스템의 최적화의 기법은 일정 시간 단위로 최대한의 성능을 발휘하도록 도와주는 것이다.
즉, 주기적으로 운영 중에 만들어진 필요하지 않는 임시 파일을 정리하거나, 운영체제 운영에 필요한 데이터를 갱신하는 등의
작업을 통해 리눅스가 최적의 상태를 유지할 수 있게 할 수 있다

 

2. 사전 확인 사항

1)  Cent OS에서 crontab이 없을 경우 (PGM 설치)

# crontab -l
-bash: crontab: command not found

 

# sudo yum install cronie
Loaded plugins: fastestmirror

Loading mirror speeds from cached hostfile
* base: mirror.web-ster.com
* updates: mirror.stanford.edu
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package cronie.x86_64 0:1.4.4-12.el6 will be installed
--> Processing Dependency: dailyjobs for package: cronie-1.4.4-12.el6.x86_64
--> Running transaction check
---> Package cronie-anacron.x86_64 0:1.4.4-12.el6 will be installed
--> Processing Dependency: crontabs for package: cronie-anacron-1.4.4-12.el6.x86_64
--> Running transaction check
---> Package crontabs.noarch 0:1.10-33.el6 will be installed
--> Finished Dependency Resolution
                                       
Dependencies Resolved
================================================================================
Package                        Arch      Version           Repository     Size
================================================================================
Installing:                            
cronie                         x86_64    1.4.4-12.el6      base           73 k
Installing for dependencies:           
cronie-anacron                 x86_64    1.4.4-12.el6      base           30 k
crontabs                       noarch    1.10-33.el6       base           10 k
                                       
Transaction Summary                    
==========================================================
Install       3 Package(s)              
                                                
Total download size: 114 k                      
Installed size: 220 k                           
Is this ok [y/N]: y                             
Downloading Packages:                           
(1/3): cronie-1.4.4-12.el6.x86_64.rpm                         |  73 kB     00:00
(2/3): cronie-anacron-1.4.4-12.el6.x86_64.rpm                 |  30 kB     00:00
(3/3): crontabs-1.10-33.el6.noarch.rpm                        |  10 kB     00:00
--------------------------------------------------------------------------------
Total                                                336 kB/s | 114 kB     00:00
Running rpm_check_debug                         
Running Transaction Test                        
Transaction Test Succeeded                      
Running Transaction                             
  Installing : cronie-1.4.4-12.el6.x86_64                   1/3
  Installing : crontabs-1.10-33.el6.noarch                  2/3
  Installing : cronie-anacron-1.4.4-12.el6.x86_64                           3/3
  Verifying  : crontabs-1.10-33.el6.noarch                                  1/3
  Verifying  : cronie-anacron-1.4.4-12.el6.x86_64                           2/3
  Verifying  : cronie-1.4.4-12.el6.x86_64                                   3/3
                                                
Installed:                                      
  cronie.x86_64 0:1.4.4-12.el6                  
                                                
Dependency Installed:                           
  cronie-anacron.x86_64 0:1.4.4-12.el6            crontabs.noarch 0:1.10-33.el6

Complete!

 출처 : http://tecadmin.net/install-crontab-in-linux/#

 

* 설치 방법정리

1) Crontab 설치(CentOS)
* cron 설치
# sudo yum update -y
# sudo yum install -y cronie
* cron 시작
# sudo systemctl start crond
* cron systemctl 활성화
# sudo systemctl enable crond
*cron systemctl 등록 확인
# sudo systemctl list-unit-files | grep crond

2) Crontab 설치(Ubuntu)
* cron 설치
# sudo apt update -y
# sudo apt install -y cron
* cron 시작
# sudo service cron start
* cron systemctl 활성화
# sudo systemctl enable crond
*cron systemctl 등록 확인
# sudo systemctl enable cron.service

 

3. 설정 방법

1) Crontab 파일 위치 및 조회
작업 설정 파일을 Crontab 파일이라고 부르며, 이 파일의 위치는 OS별로 차이가 있다.
리눅스는 /var/spool/cron/ID, 솔라리스는 /var/spool/corn/crontabs/ID에 위치한다.
그럼 이 파일을 직접 수정해야 하는가? 그렇지 않다. crontab 명령을 통해 설정과 조회를 한다.

crontab 설정 파일을 새롭게 편집하고자 한다면 -e 옵션을 주고, 수정하기 전에 현재 등록된 내용을 보고자 한다면 -l 옵션을 사용하며, 등록된 내용을 삭제하려면 -d 옵션을 사용한다

설정 내용을 조회(-l 옵션).
$ crontab -l
no crontab for truefeel
설정한 적이 없어 아직 비어있다.

- /etc/crontab 파일
- /etc/rc.d/init.d/crond 스크립트
- /var/spool/cron 디렉토리 내의 크론 설정 파일들

2) Crontab 파일 형식

필드 의미 범위
첫번째 0-59
두번째 0-23
세번째 0-31
네번째 1-12
다섯번째 요일 0-7 (0 또는 7=일요일, 1=월, 2=화, ...)
여섯번째 명령어 실행할 명령을 한줄로 씀

- 모든 엔트리 필드는 공백으로 구분된다.
- 한 줄당 하나의 명령 (두줄로 나눠서 표시할 수 없음)
- # 으로 시작하는 줄은 실행하지 않는다.

ctrontab 설정/수정 (-e 옵션)
crontab -e을 하면 vi 에디터가 나온다(환경변수 EDITOR에 따라 다른 에디터를 사용할 수 있다).
 
$ crontab -e (예제)
# /home 디렉토리를 /BACKUP/home으로 백업 수행
# 30분, 새벽 4시와 낮 12시, 모든 일, 모든 월, 모든 요일
30 4,12 * * *  /usr/bin/rsync -avxH --delete /home /BACKUP/home > /dev/null 2>&1
#
# 파일/디렉토리 퍼미션 설정
# 40분, 새벽 1시, 매주 일요일
40 1 * * 0  /root/bin/perm_set.sh   > /dev/null 2>&1
#
위는 매일 4:30분과 12:30분에 rsync 명령을, 매주 일요일 1:40분에 perm_set.sh를 실행함을 의미한다.

3) 설정 예시

시간 설정에서 몇가지 의미있는 것들을 알아보자.
- *표시는 해당 필드의 모든 시간을 의미한다.
- 3,5,7와 같이 콤마(,)로 구분하여 여러 시간대를 지정할 수 있다.
- 2-10와 같이 하이픈(-)으로 시간 범위도 지정할 수 있다.
- 2-10/3와 같이 하이픈(-)으로 시간 범위를 슬레시(/)로 시간 간격을 지정할 수 있다
  (2~10시까지 3시간 간격으로. 즉, 3, 6, 9시를 의미함)

실행 시간 형식 (양식: 분 시 일 월 요일 명령어)
매주 토요일 새벽 2:20   20  2 *  *  6  명령어
매일 오후 4,5,6시     0  4-6   *  *  *  명령어
매일 2시간 간격으로 5분대 5  */2 *  *  * 명령어
매월 1일 새벽 1:15  15  1   1  *  *  명령어
1,7월 1일 새벽 0:30  30  0   1  1,7  *  명령어
매분마다 * * * * * 명령어
월 ~ 금요일 매 5분마다 */5 * * * 1-5 명령어

   
4) /etc/crontab 파일로 설정
* 매시 1회 자동실행하기 위한 시스템 크론 설정

01 * * * * root run-parts /etc/cron.hourly
  → 매일 매시 01분마다 /etc/cron.hourly 디렉토리내에 존재하는 파일들을 실행


* 매일 1회 자동실행하기 위한 시스템 크론설정

02 4 * * * root run-parts /etc/cron.daily
 매일새벽 4시 02분마다 /etc/cron.daily  디렉토리내에 존재하는 파일들을 실행

 

* 매주 1회 자동실행하기 위한 시스템 크론설정

22 4 * * 0 root run-parts /etc/cron.weekly
 매주 일요일새벽 4시 22분마다 /etc/cron.weekly 디렉토리내에 존재하는 파일들을 실행

 

* 매월 1회 자동실행하기 위한 시스템 크론설정

42 4 1 * * root run-parts /etc/cron.monthly
매월 1일새벽 4시 42분마다 /etc/cron.monthly 디렉토리내에 존재하는 파일들을 실행


* root 이외의 사용자에게 crontab 명령어를 이용할 수 있게 하는 방법

 /etc/cron.allow 파일에 사용자의 id를 등록


* 일반사용자의 crontab 명령어사용을 제안하고자 한다면
 /etc/cron.deny 파일에 사용자의 id 를 등록

 

5. Crontab 서비스 관련 명령어

a) 현재 cron deamon이 돌고 있는지 확인
    ps -ef | grep cron
b) cron deamon kill
    kill -9 "pid of cron"
c) deamon 재실행
   /usr/sbin/cron
d) 명령어 위치
   /usr/bin/crontab
e) 사용형식 및 옵션
   crontab [ -u 사용자ID ] 파일
   crontab [ -u 사용자ID ] [-d 크론디렉토리] { -l | -r | -e }
    * -e : 크론탭 설정 입력 파일 (vi 에디터 활용, 설정 입력 후 :wq 로 저장)
       -l : 현재 크론탭에 설정되어 있는 내용 확인
      -r : 현재 크론탭에 설정되어 있는 내용 삭제

 

6. 기타

Crontab 에서 % 문자 사용할 경우 주의 사항
매번 할 때마다 동일한 실수가 계속 발생하여, 정리하여 기억하려고 적습니다.

 

해당 사항은 다음과 같습니다.  
cron을 이용해서, "같은 시간(새벽 4)에, 백업을 하는데, 해당 날짜에 맞는 로그 파일을 생성하고 결과를 저장하자" 입니다.
당연히, date 를 이용하여, date '+%e' 를 이용하면 해당 날짜가 나오니까 다음과 같이 생성하였습니다.

 

0 4 * * * /backupscript.sh > /var/log/backup_result_`date '+%e'`.txt 2>&1
로 생성하였습니다.

위 내용을 shell에서 동작시키면 정상적으로 잘 됩니다.

 

shell> /backupscript.sh > /var/log/backup_result_`date '+%e'`.txt 2>&1
그런데, cron에만 들어가면 아예 동작을 하지 않는 것입니다. 

바로 '%' 문자 때문입니다.

 

% 문자는 crontab에서는 개행 문자라서 계속 아무 동작도 하지 않는 것이었습니다.
사용하려면 escape(\) 문자를 사용해서 표현하셔야 합니다.

 

따라서 위 내용은 아래와 같이 수정했어야 합니다.
[잘못된 예]
0 4 * * * /backupscript.sh > /var/log/backup_result_`date '+%e'`.txt 2>&1

 

[수정본]
0 4 * * * /backupscript.sh > /var/log/backup_result_`date '+\%e'`.txt 2>&1

정리하면 다음과 같습니다.

crontab에서 %를 쓰려면, escape(\) 문자를 이용해야 함 



4. FAQ

1) cron 설정한 후에는 crond 데몬을 재실행해야 하나요?

    아닙니다. crontab -e 으로 설정 후 빠져나오면 바로 적용됩니다.
2) truefeel 사용자는 cron을 못 쓰게 하고 싶습니다.
    /etc/cron.allow : 허용할 사용자 ID 목록
    /etc/cron.deny  : 거부할 사용자 ID 목록
    cron.allow 파일이 있으면 이 파일에 들어있는 ID만 사용 가능
    cron.deny  파일이 있으면 이 파일에 들어있는 ID는 사용 불가
    따라서 cron.deny에 truefeel ID를 추가해주면 됩니다.
3) > /dev/null  2>&1 이 무슨 뜻입니까?
    지정한 명령어 처리 결과와 발생할지 모르는 에러메시지를 출력하지 않고 모두 버린다는(/dev/null)는
    뜻입니다. 만약 결과와 에러를 파일로 저장하려면 /dev/null 대신 파일명을 적어주면 됩니다.

4) crontab -r 했을 때 복구 및 백업 방법

  *복구 방법

   - /var/spool/mail/  폴더에 계정 메일로 날라오게 되어있다.
   - /var/log/cron 파일에 클론들의 로그들이 남는다.
     .cat cron | grep crond | grep CMD |less 등으로 클론 관련 자료만 뽑아서 다시작성하는 방법이있다.
   - /tmp/ 폴더 밑에 다른이름으로 남는 경우도 있다.

 *백업 방법

  - crontab에 매일 특정시간에 백업하도록 설정 (예: 매일 0시 0분에 백업설정)
   0 0 * * * crontab -l > /log/crontab_bak_`date +%Y%m%d%H%M'

 

 참고블로그 : https://luckys.tistory.com/162

 

 

 

+ Recent posts