Linux::셸(shell)과 Cron

안준성·2022년 8월 22일

Linux

목록 보기
2/5

셸 (Shell)

image

셸이란?

  • OS와 대화하는 프로그램.
  • 사람이 직접 커널을 조작하긴 어렵기 때문에 사용자와 커널 사이에서
    명령을 해석 및 전달해주는 중간다리 역할의 프로그램이다.

종류

  • Bourne Shell. 줄여서 sh로 유닉스 최초의 셸이다.
  • sh를 좀 더 쉽게 개선한 것이 bash. 현재 리눅스의 표준 셸이다.
  • zsh, z shell은 bash의 확장 버전으로 현재 macOS의 표준 셸이다.

zsh 명령어

touch [파일 명] # 현재 디렉토리에 파일 생성

cat [파일 명] # 파일 열람

./[파일 명] # 파일 실행

echo "hello world" > test.txt # 내용 입력후 파일 생성
echo "add text" >> test.text # 내용을 파일 마지막에 추가

셸 스크립트

셸은 내부적으로 프로그래밍 기능이 있어 프로그램을 작성할 수 있으며
이를 셸 스크립트라 한다.

script

  • 하나의 순차적인 흐름.
  • 셸에서 실행할 명령어들이 담긴 텍스트 파일이다.
  • 반복적으로 해야할 일의 흐름을 shell script로 작성해서
    자동화 시킬 수 있다.
  • 특히 웹이나 모바일 개발의 경우 빌드 관련 작업들을 스크립트로 많이 처리한다.

환경 변수

  • 현재 환경에 선언하여 환경 내 어디서든 사용할 수 있는 변수.
  • 시스템 환경에 선언하면 시스템에서 전역적으로 사용할 수 있다.
  • ex) 프로그램에서 로컬에 저장된 값을 필요로 할 때
    사용자마다 로컬 디렉토리는 다를 수 있으므로 변수로써 접근해야 하는데
    이 때 환경변수를 이용할 수 있다.

환경변수 선언하기

export 환경변수명=# 새로운 환경변수 설정
    
source 스크립트파일 # 현재 셸에서 스크립트 실행
  • "/home/.bashrc" 파일에 이 환경변수를 등록하면 시스템 전역변수로써 사용할 수 있다.
echo 'export 환경변수명=값' >> ~/.bashrc
  
source ~/.bashrc

.profile, .bashrc, .bash_profile, ...

  • 셸을 시작할 때 자동으로 실행되는 스크립트들로 셸 초기화 시 사용한다.

환경 변수 명령어

  • env : 환경변수 조회
    env | grep [검색명] : 검색명으로 시작하는 환경 변수만 조회할 수 있다.
    unset [환경변수명] : 환경변수 해제

스크립트 변수를 쓰는 방법들

  • variable.sh
    #!/bin/sh #어떤 셸에서 실행할지 나타내는 문장. 관례인듯 하다.
	VAR1=$#
	echo "num=$#"
	echo "parameter: $0 $1 $2 $3"
	echo "parameters: #@"
    echo "VAR1 = $VAR1"
    echo 'VAR1 = $VAR1'
    echo VAR1=`ls`
  • variable.sh 실행하기
    $ sh variable.sh 1 a "b" 이렇게 실행할 때 파라미터를 넘겨줄 수 있다.

redirection

셸에서 입력과 출력의 방향을 바꾸는 명령어

  • 표준 입력 0 : 키보드
    표준 출력 1 : 터미널
    표준 에러 2 : 터미널 화면

  • > : 표준 출력을 지정 파일로
    < : 키보드 대신 파일로부터 입력을 받음
    2> : 표준 에러를 지정 파일로
    2>&1 : 표준 에러를 표준 출력으로
    1>&2 : 표준 출력을 표준 에러로

  • ex)
    $ ./my.sh > log.txt 2>&1 : my.sh의 실행결과를 log.txt 파일로, 에러가 있으면 출력

pipe

  • 이전 프로그램의 표준 출력을 이후 프로그램의 표준 입력으로 사용할 수 있다.
    $ ps -A | grep ssh
    $ netstat -na | grep 22 | grep tcp

셸 스크립트의 활용 사례

  • 디스크 상태 및 파일 시스템 점검

    • 디스크의 상태 점검 작업을 통해 디스크 fault로 발생할 수 있는 장애를 대비.
  • 주요 설정 파일 권한 점검

    • 시스템 혹은 애플리케이션과 중요한 설정파일의 권한이 올바른지 확인.
  • 프로세스 점검

    • 애플리케이션과 관련된 서비스가 정상적으로 동작하고 있는지 확인.
  • 서비스 배포

    • 애플리케이션 배포에 관련된 작업을 자동화하여 단순 반복을 줄임.

Crontab

유닉스 계열 컴퓨터 운영 체제의 시간 기반 잡 스케줄러
특정 시간마다 실행하고 싶은 명령어 및 스크립트를 등록하여
자동으로 반복실행할 수 있게 해준다.

명령어

  • crontab -e : 등록된 명령어를 설정
    crontab -l : 등록된 명령어 리스트 확인
    crontab -r : 크론탭 삭제

실행 예제

  • crontab -e 입력 후 다음과 같이 입력하고 저장한다.
	# 매분마다 test.sh 실행
	* * * * * /home/script/test.sh

profile
안녕하세요

0개의 댓글