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

 

VMware vSphere 설명서

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

docs.vmware.com

 

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

 

 

 

프로그램을 설치하면 자동으로 설치후 시작메뉴에 설치된 프로그램의 메뉴폴더가 생기게 된다.

그런데, 대부분은 메뉴 폴더명만 보면 어떤 프로그램인지 알 수 있으나 일부프로그램은 잘 모를 

수 있다.

이럴때 본인이 이해하기 쉬운 이름으로 변경하여 관리 가능하다.

 

※ 시작메뉴 폴더명 변경 방법

① 탐색기를 실행

② C:\ProgramData\Microsoft\Windows\Start Menu\Programs 이동
     ex: Cisco 메뉴폴더 확인

③ 메뉴 폴더명을 원하는 이름으로 수정
     ex: Cisco 메뉴폴더 명 →  Cisco VPN 으로 수정

④ 시작메뉴를 클릭하면 수정된 메뉴를 볼 수 있다.
     ex: 시작을 누르면 Cisco VPN 으로 메뉴 폴더 변경 확인

 

 

[변경전 시작 메뉴 폴더] Cisco 메뉴 폴더

 

[변경후 시작 메뉴 폴더] Cisco → Cisco VPN

PSR(Problem Steps Recorder)은 Windows에 기본설치된 문제가 발생했을 때 취한 정확한 단계를 기록하여 장치나 OS의 문제를 해결하는 데 도움이 되는 프로그램이다. PSR 수행한 결과를 MS지원 전문가에게 보내 문제 해결의 도움을 받을 수 있다.

 

  • Steps Recorder는 기능 및 바로 가기 키를 제외하고 사용자가 입력하는 텍스트(예: 암호)를 기록하지 않는다.
  • 전체 화면 게임과 같은 일부 프로그램은 정확하게 캡처되지 않을 수 있다.

 

Ⅰ.PSR은 어떻게 사용하나?

1. Steps Recorder를 열려면 시작 버튼을 누른 다음  Windows 보조프로그램 > 단계 레코더 (Windows 10) 또는 PSR 입력

    또는 보조프로그램 > 문제 단계 레코더 (Windows 7 또는 Windows 8.1)를 선택

 

2.기록 시작 을 선택

단계레코더(PSR)가 자동으로 활성 창을 캡처하고 기록하여(현재 수행 중인 응용 프로그램에 관계없음) 단계별 진행 상황을 보여줌

 

 

3. 진단하려는 문제를 재현하는 단계를 진행한다. 언제든지 녹음을 일시 중지하고 다시 시작할 수 있다.

필요한 사항에 따라 녹화를 일시 중지하거나 다시 시작하며 녹화 할 수 있다.

 

 

4. (선택 사항) 녹화하면서 설명 추가 를 선택하고 마우스를 사용하여 화면에서 설명을 달고 싶은 부분을 선택하고
    설명을 입력한 다음 확인 을 선택
한다.

설명 추가 버튼을 클릭하면 오류를 표시하는 메시지 영역을 강조 표시하고 명확한 이해를 위해 설명을 추가할 수 있다.

 


5.완료되면 
녹화 중지 를 선택 한다.

녹화 중지 버튼을 클릭하면 스크린샷과 함께 수행된 활동의 단계별 목록을 보여주는 새 창이 열린다. 
(예: 패키지 설치 중에 오류가 발생하고 이 오류와 수행한 단계를 기록하려면 "기록 시작" 버튼을 누른 다음 설치 패기지를 시작하고, 오류 메시지가 표시되면 "녹화 중지" 버튼을 눌러서 기록하면 된다)

 

6.수행한 단계의 기록을 검토하여 표시하려는 내용이 표시되는지 확인한다. 

저장 을 선택 하고 .zip 파일의 이름을 지정하고 저장할 위치를 선택한 다음 저장 을 선택 한다. 

이 .zip 파일을 첨부하여 PC의 문제 해결을 돕는 사람에게 보낼 수 있고 모든 웹 브라우저에서도 볼 수 있다.

 

※문제 단계 기록기(PSR)는 녹화 시작부터 중지까지의 모든 사용자 활동을 캡처하고 단계 정보별로 자세한 단계를 제공합니다. 이 파일을 저장하고 이 정보를 MS나 전문가와 공유하여 문제를 해결할 수 있다.

 

Ⅱ.설정 조정 방법은?

1. 단계 레코더에서 도움말 버튼 옆에 있는 아래쪽 화살표를 선택한 다음  설정 을 선택한다 .

2. 다음 설정을 변경 가능하다

  • 출력 위치. 파일을 저장할 때마다 위치와 파일 이름을 묻는 메시지가 표시되지 않도록 하려면 찾아보기 를 선택 하여 기본 위치와 파일 이름을 설정한다.
  • 화면 캡처를 활성화합니다. 예를 들어 화면에 공유하고 싶지 않은 개인 정보가 표시될 수 있는 경우와 같이 스크린샷을 캡처하지 않으려면 아니요 를 선택 한다. 앱은 여전히 ​​단계에 대한 텍스트 설명을 기록한다.
  • 저장할 최근 화면 캡처 수입니다. 기본적으로 캡처 파일의 크기를 줄이기 위해 마지막 25개의 스크린샷만 저장하므로 그 이상을 녹화해야 하는 경우 저장할 최근 화면 캡처 수를 늘려야 한다.

   ※참고:  여기에서 조정하는 모든 설정일시적 임으로 단계 레코더를 닫았다가 다시 열면 기본값으로 초기화된다.

 

* 서버 Logging설정이 되어있는지 점검하고, 특이사항이 있는지 확인 필요!!

1. OS 로그 설정

  • 시스템 로그 설정되어 있는지 확인하고, 장애 분석 및 시스템 문제 발생 시 확인이 가능하도록 필수 로깅이 설정되어있는지 확인한다.
  • 로그가 중복으로 설정되어, 로그가 과다 생성되고 있는지 확인
  • syslogd

       - /etc/syslog.conf, /etc/rsyslog.conf 파일로 로그형식 및 경로를 설정함

       - syslogd 데몬이 OS 로그를 기록함

  • rsyslog의 메인 설정화일은 /etc/rsyslog.conf 임. 이 화일에서 /etc/rsyslog.d/50-default.conf 을 불러와 추가적인 내용을 설정하며 설정화일에 대한 자세한 내용은 man rsyslog.conf 를 확인 

 

  • rsyslog관련 파일
관련파일  설명 
/etc/rc.d/init.rsyslog -rsyslogd 데몬을 동작시키는 스크립트
/etc/init.rsyslog.conf -rsyslogd 데몬 환경 설정 파일

/etc/sysconfig/rsyslog -rsyslogd

데몬 실행과 관련된 옵션설정파일

/sbin/rsyslogd
실제 rsyslog 데몬

 

2. OS 로그 특이사항 확인

  • syslogd에 설정한 로그파일에 OS로그가 정상적으로 기록되고 있는지 확인
  • kernel오류, emergency, alert, critical, error 레벨의 로그가 남지는 않는지 우선 확인 후 그 외 warning 이하 minor level의 로그를 확인함
  • 주요 로그파일
    • /var/log/messages
    • /var/log/cron
    •  /var/log/boot.log
    •  /var/log/dmesg
    • /var/log/kern.log
  • 기타 로그파일
    • /var/log/auth.log
    • /var/log/secure
    • /var/log/wtmp
    •  /var/log/utmp
    •  /var/log/xferlog
    •  /var/log/yum.log
    • /var/log/named.log

3. 자원 사용률 로깅 설정 여부 확인

  • 자원사용률이 로깅되고 있는 지 확인
  • polestar, ontune등 상용 SMS 툴이 없을 경우 nmon, perfmon 등으로 logging 설정이 되어있는지 확인
  • nmon 로깅 예시(Version에 따라 상세 옵션이 다를 수 있음)

4. 이상징후 발생 시 담당자에게 알림 여부 확인

  • 서버 자원사용률 임계치 초과, 서버로그 상 특이사항 발생 시 대시보드 또는 알람을 통해 담당자에게 전달되는지 확인

5. Log Level

  • syslog는 IETF의 RFC 5424 로 등록됨. RFC 5424에는 syslog 메시지를 인터넷 상으로 전달하는 방법을 기술
  • 메시지의 특성을 정의하는 facility와 severity중 facility는 메시지를 발생시킨 프로그램의 타입을 나타내는 값이며, severity는 메시지의 성격 또는 중요도를 나타냄. syslog에서는 이 값에 따라 로그 메시지를 어느 화일에 기록할지, 누구에게 이 사실을 알릴 것인지를 결정함
  • facility와 severity에 따라 어떤 화일에 로그를 쓸지에 대해, rsyslog의 경우 /etc/rsyslog.d/50-default.conf 에 정의되어 있다.

● /etc/rsyslog.conf 파일
※기본 형식
: facility.priority    action

형식 설명  
facility .일종의 서비스를 의미
.메시지를 발생 시키는 프로그램의 유형
 
priority .위험의 정도를 나타내며, 설정한 수준을 포함해서 높으면 메시지 보냄
.설정 앞에 = 사용의 경우 : 해당 수준(priority)의 위험도와 같은 경우에 메시지 보냄 
.설정 앞에 ! 사용의 경우 : 해당 수준(priority)만 제외 시킬때 사용
 
action .메시지를 보낼 목적지나 행동들에 관한 설정
.보통 파일명이나 아이디 들을 적음
 
규칙 .facility : 콤마(,) 사용
.facility.priority의 조함 : 세미콜론 (;) 사용
 

 

1) severity : 메시지의 성격 또는 중요도 -0~7 사이의 숫자로, 숫자가 낮을수록 심각한 문제라는 것을 내포함

Code Severity Keyword C code Description
0 Emergency emerg (panic) LOG_EMERG System is unusable.
1 Alert alert LOG_ALERT Action must be taken immediately.
2 Critical crit LOG_CRIT Critical conditions.
3 Error err (error) LOG_ERR Error conditions.
4 Warning warning (warn) LOG_WARNING Warning conditions.
5 Notice notice LOG_NOTICE Normal but significant condition.
6 Informational info LOG_INFO Informational messages.
7 Debug debug LOG_DEBUG Debug-level messages.

2) facility : 메시지를 발생시킨 프로그램의 타입(발생주체) -이벤트를 생성한 프로세스, 모듈, 프로토콜을 나타냄. 메일 시스템, 커널, 네트워크 등이 될 수 있음

Facility
Number
Keyword C code Facility Description
0 kern LOG_KERN kernel messages
1 user LOG_USER user-level messages
2 mail LOG_MAIL mail system
3 daemon LOG_DAEMON system daemons
4 auth LOG_AUTH security/authorization messages
5 syslog LOG_SYSLOG messages generated internally by syslogd
6 lpr LOG_LPR line printer subsystem
7 news LOG_NEWS network news subsystem
8 uucp LOG_UUCP UUCP subsystem
9 clock LOG_CRON clock daemon
10 authpriv LOG_AUTHPRIV security/authorization messages
11 ftp . FTP daemon
12 . . NTP subsystem
13 . . log audit
14 . . log alert
15 cron . clock daemon
16 local0 LOG_LOCAL0 local use 0 (local0)
17 local1 LOG_LOCAL1 local use 1 (local1)
18 local2 LOG_LOCAL2 local use 2 (local2)
19 local3 LOG_LOCAL3 local use 3 (local3)
20 local4 LOG_LOCAL4 local use 4 (local4)
21 local5 LOG_LOCAL5 local use 5 (local5)
22 local6 LOG_LOCAL6 local use 6 (local6)
23 local7 LOG_LOCAL7 local use 7 (local7)

3) Priority : 심각도를 의미

facility 심각도
none 저장된 facility제외
debug 1
info 2
notice 3
warning 4
error 5
crit 6
alert 7
emerge 8

4)설정 예시

*.emerg      shutdown - h now                    //모든 장치의 emerg발생시 Shutdown
kern.*         /dev/console                            //커널 관련 로그를 /dev/console에 남김
authpriv.*    /var/log/sercure                       //xinetd접속 로그를 /var/log/sercure 남김

*.info;mail.none     /var/log/message          //모든 facility에서 발생하는 info이상 심각도(2-8)의
                                                                     이벤트를 로깅하되 mail Facility에서 발생하는 로그는 로깅하지 않음
*.*;auth,authpriv.none,local0.none      -/var/log/syslog         
                                                                 //모든 로그(*.*)를 /var/log/syslog에 기록하지만, 세미콜론(;) 이후의 facility들인
                                                                   auth, authpriv, local0 은 제외(none)하라는 것임. 화일이름 앞의 
- 는 로그를
                                                                   파일에 바로 쓰지 말고 메모리에 로그를 가지고 있다가 디스크에 입출력 여유가
                                                                   있을 경우 쓰라는 의미임
                                                                (
http://shallowsky.com/blog/linux/rsyslog-conf-tutorial.html 의 Rules Section참조)

 

  • 파일 뿐 아니라 다른 곳으로도 로그를 보낼수 있음
    @IP, @[hostname] : 다른 서버로 로그 전달
    [사용자] : 지정한 사용자가 로그인 한 경우, 해당 사용자의 터미널에 표시
    * : 현재 로그인 되어 있는 모든 사용자의 터미널로 전달
    /dev/console, [터미널] : 지정한 터미널에 표시

1. Windows10에서 Skype삭제 Powershell

   1) Powershell창에서 명령실행
       Get-AppxPackage *skypeapp* | Remove-AppxPackage

  

    2) Enter쳐서 "배포 작업 진행 상태: Microsoft.SkypeApp_ ... 초기화됨" 이라고 메시지가 뜨면 Skype가 삭제된 것임.
       완료후 창을 닫고 Skype가 정상적으로 삭제되었는지 확인

 

 

2. wmic를 활용한 유용한 정보보기

    1) OS정보 간단히 보기

       #wmic os list brief /format:list

       #wmic /output:OS_List.html os get /format:hform

OS정보를 html로 만든 html결과파일

 

Windows OS에서 디스크 파티션을 하려면 일반적으로 "컴퓨터 관리 → 저장소  디스크 관리"를 사용한다. 

diskpart.exe라는 명령어를 사용해도 동일한 작업이 가능하다.


C:\Windows\system32>diskpart

Microsoft DiskPart 버전 6.1.7601

Copyright (C) 1999-2008 Microsoft Corporation.

컴퓨터: MSDN-SPECIAL


DISKPART> list disk                                                            디스크 확인 명령

  디스크 ###  상태           크기     사용 가능     Dyn  Gpt 

  ----------  -------------  -------  ------------  ---  ---                 2개의 디스크 존재 확인

  디스크 0    온라인        111 GB       1024 KB                         시스템 디스크 존재 확인

  디스크 1   온라인         300 GB       300 GB                          미사용 디스크


DISKPART> list partition                                                      파티션 표시

파티션을 나열하도록 선택한 디스크가 없습니다.                        디스크 미선택 오류

디스크를 선택하고 다시 시도해 보십시오.


DISKPART> select disk 1                                                     디스크 1선택

1 디스크가 선택한 디스크입니다.


DISKPART> list disk                                                           디스크 1선택 확인

  디스크 ###  상태           크기     사용 가능     Dyn  Gpt

  ----------  -------------  -------  ------------  ---  ---

  디스크 0    온라인        232 GB       1024 KB

* 디스크 1    온라인        465 GB       1024 KB


DISKPART> list partition

  파티션 ###  종류              크기     오프셋                          파티션 2개 포함 확인

  ----------  ----------------  -------  -------

  파티션 1    주                  232 GB  1024 KB                       파티션 1 은 주파티션임

  파티션 2    복구                 875 MB   232 GB


DISKPART> list volume

  볼륨 ###   Ltr  레이블      Fs    형식       크기     상태          정보

  -----------  ---  ----------  ----  ---------  -------  ------------  --------

  Volume 0   C                NTFS   파티션  232 GB  정상         시스템

  Volume 1   D   backup   NTFS   파티션   270 GB  정상

  Volume 2   E   새 볼륨   NTFS   파티션    195 GB  정상


※ "list disk" 와 "list volume" 은 "select ***" 하지 않아도 사용할 수 있는데 

"list partition"은 대상이 되는 디스크가 선택된 상태에서만 사용 가능함



DISKPART> list disk                                                            디스크 확인

  디스크 ###  상태           크기     사용 가능     Dyn  Gpt 

  ----------  -------------  -------  ------------  ---  ---               

  디스크 0    온라인        111 GB       1024 KB                      

  디스크 1   온라인         300 GB       300 GB                       


DISKPART> select disk 1                                                     디스크 1선택

1 디스크가 선택한 디스크입니다.


DISKPART> clean

DiskPart에서 디스크를 정리했습니다.


DISKPART> create partition primary                                      디스크 1 전체 용량을 주 파티션으로 작성

DiskPart에서 지정한 파티션을 만들었습니다.


DISKPART> create partition primary size=270000                     270Gbytes의 주 파티션을 작성


DISKPART> active

DiskPart에서 현재 파티션을 활성으로 표시했습니다.


DISKPART> format fs=ntfs quick                                          NTFS타입으로 Quick format 수행

100 퍼센트 완료

DiskPart가 볼륨을 성공적으로 포맷했습니다.


DISKPART> assign letter=D                                               → D드라이브 할당함 


DISKPART> list volume                                                     → 볼륨확인


  Volume ###  Ltr Label        Fs    Type        Size     Status     Info

  ----------  --- -----------  ----  ----------  -------  ---------  --------

  Volume 0   C                NTFS   파티션  232 GB  정상         시스템

  Volume 1   D   backup   NTFS   파티션   270 GB  정상

* Volume 2   E   새 볼륨   NTFS   파티션    195 GB  정상         → 선택된 볼륨 ("*"가 Volume앞에 표시됨)


DISKPART> delete volume                                                 → 볼륨 삭제

DiskPart는 볼륨을 정상적으로 삭제했습니다.


DISKPART> list volume                                                     → 볼륨 삭제확인

  Volume ###  Ltr Label        Fs    Type        Size     Status     Info

  ----------  --- -----------  ----  ----------  -------  ---------  --------

  Volume 0   C                NTFS   파티션  232 GB  정상         시스템

  Volume 1   D   backup   NTFS   파티션   270 GB  정상

※볼륨은 삭제되었지만 파티션은 아직 남아 있으므로 필요하면 파티션도 선택후 삭제함


DISKPART> exit


이제 컴퓨터를 다시 시작한다.

* Windows ISO이미지 다운로드 받기

https://www.microsoft.com/ko-kr/software-download/windows7

 

* Windows 7 USB/DVD 다운로드 도구로 부팅 USB 만들기

1. Windows 7 USB/DVD Download Tool 다운로드

   https://www.microsoft.com/ko-kr/download/details.aspx?id=56485


2. Tool 설치(Windows7-USB-DVD-Download-Tool-Installer-ko-KR)


3. 설치후 생성된 파일 실행(Windows 7 USB DVD 다운로드 도구)

http://blog.naver.com/hacker781004?Redirect=Log&logNo=100178960168

 

+ Recent posts