7주차에는
1. 리눅스에서 사용하는 셸에 대해 이해하고,
2. 셸 스크립트를 이용하여 간단한 스크립트를 작성해보고,
3. 예약 작업을 설정하는 실습을 진행하였습니다.
● 실습 과제 결과
<유용한 bash script를 하나 검색하여, 유용한 이유, 해당 스크립트 설명, 실행 결과를 작성하시오.>
스크립트 설명: 여러 파일들의 이름을 한번에 바꿀 수 있는 스크립트이다. bash rename.sh <바꾸고 싶은 이름> <새로운 이름> 형태로 입력하면 파일들의 이름이 바뀐다.
예) name01 name02 name03 파일이 있을 때, bash rename.sh name test라고 입력하면 test01 test02 test03으로 바꿀 수 있다.
유용한 이유: 실습을 하면서 파일들의 이름을 변경해야 할 경우가 많은데, 일일이 바꾸는 것 보다 중복되는 이름 여러개를 쉽고 빠르게 바꿀 수 있다는 점에서 매우 유용하게 쓰일 것 같다.
ls -l을 했을 때 ef라는 중복된 이름들을 전부 if로 바꾸도록 실행해본 화면이다.
● 새로 배운 내용
1. Shell
Shell : 사용자의 명령을 해석하여 커널에 전달.
커널은 하드웨어를 제어하고, 사용자는 shell을 통해 커널에 명령을 전달한다.
shell 의 종류도 다양하게 있음. (bash, zsh, csh 등)
Shell Script
• 명령어 집합
• 과정이 복잡하여 하나라도 빠지면 문제가 생기거나, 매일 또는 주기적으로 해야 하는 명령의 집합
• 시스템을 사용하여 환경 설정하는 경우, 애플리케이션을 설치할 경우, 매일 점검해야 하는 시스템 상태 체크 등
-> 사용자보다는 시스템 관리자가 주로 사용
• echo $0
• .log 파일을 bak 디렉터리에 저장한다면,
touch a.log b.log c.log #로그파일을 만듦
mkdir bak #디렉터리를 만듦
cp *.log bak #복사해서 bak에 넣어줌
ls -l bak
vi backup.sh #셸 스크립트의 확장자는 sh
#!/bin/bash
if [ ! -d bak ]; then #기존에 디렉터리가 있는지 확인하여
mkdir bak #디렉터리가 없으면 만듦
fi
cp *.log bak
bash backup.sh -> 스크립트를 실행 (편리함)
[1] Shell - bash
• bash (Bourne Again SHell) : Bourne shell을 개선한 것
우분투에서 기본으로 사용하는 셸
• bash 특징 : alias 기능 (명령 단축 기능) / History 기능 / 연산 기능 등
• bash 셸의 명령문 처리 방법 : (프롬프트) 명령 [옵션…] [인자…]
환경 변수
: 시스템에서 기본적으로 제공하는 값 (미리 정해진 값)
• echo $환경변수이름 (예: $HOME )
• 환경변수 설정 : export 환경변수=값
• export HI=‘hi’
• echo $HI
• unset HI #설정을 해제
• 환경변수 확인 : printenv
[실습] Shell Script Programming
(1) Hello World 출력
스크립트 실행 방법
1) bash hello.sh
2) ./hello.sh
* ./hello.sh 를 바로 실행했을 때 권한이 없다고 뜸 -> chmod +x hello.sh
(2) 환경 변수를 이용하여 정보 출력
* echo $환경변수이름
(3) 변수
변수에 넣는 모든 값은 문자열(String)로 취급 (숫자를 사용하기 위해서는 expr 키워드를 사용)
파라미터 변수
• $0, $1, $2 의 형태.
• 실행하는 명령의 각 부분을 변수로 지정
(4) 조건문
(5) 반복문
(6) 사용자 정의 함수
● 문제 발생 및 해결 과정
1)
cron을 이용한 백업 실습에서 과정을 똑같이 따라했는데 계속 위의 사진처럼 백업 파일이 뜨지 않고 total 0이라고 나오는 오류가 발생했다. 다행히 미리 q&a에 질문한 다른 학생의 질문과 답변 내용을 보고 myBackup.sh 파일을 실행할 수 있는 모드로 바꾸는 chmod +x myBackup.sh 를 추가해서 금방 해결할 수 있었다.
2)
그 외에도 오타로 인한 자잘한 오류들만 몇 가지 발생했다. 하지만 어떤 줄에 어떤 오류가 발생했는지 알려주어서 set number를 키고 해당 줄만 교수님 화면과 비교해서 어디가 틀렸는지 비교적 금방 잡아낼 수 있었다.
● 참고할 만한 내용
blog.naver.com/jeraid/60014745371
유용한 스크립트들
이 스크립트들은 이 문서의 주제에 딱 들어맞지는 않지만 쉘 프로그래밍 테크닉의 재밌는 부분을 보여주고 ...
blog.naver.com
blog.gaerae.com/2015/01/bash-hello-world.html
Bash 입문자를 위한 핵심 요약 정리 (Shell Script)
blog.gaerae.com
● 회고
좋았던 점(+)
셸 스크립트에 대한 실습을 처음 해보았는데 다른 언어들과 비슷해서 익숙했던 부분들도 있고 새롭게 알게된 내용들도 있어서 신기했다. 스크립트를 잘 사용한다면 반복적인 작업들을 쉽게 처리할 수 있을 것 같아 서버 관리에서 매우 필수적이라는 생각이 들어서 하나하나 배워나가는 것이 재미있었던 7주차 수업이었다.
아쉬웠던 점(-)
실습을 하면서 $를 사용할 때 글씨가 파란색으로 변해 배경과 잘 구분이 가지 않아 조금 어려움이 있었다. 잘 실행이 되지 않는다면 모니터를 매우 가까이 두고 눈을 크게 뜨고 찾아야했다. 오타가 나고 그걸 찾는 과정에서 시간을 조금 잡아먹어서 아쉬운 부분이 있었다.
새로 알게된 점(!)
shell 스크립트와 예약작업인 cron과 at에 대해 새로 배웠다. 리눅스에서 중요한 부분을 차지하는 셸 스크립트에 배워서 흥미로웠다.
'개발공부 > 컴퓨터시스템관리' 카테고리의 다른 글
[컴퓨터시스템관리] 9주차 중간고사 과제 (0) | 2021.04.28 |
---|---|
[컴퓨터시스템관리] 8주차 실습일지 (0) | 2021.04.26 |
[컴퓨터시스템관리] 6주차 실습일지 (0) | 2021.04.11 |
[컴퓨터시스템관리] 5주차 실습일지 (0) | 2021.04.05 |
[컴퓨터시스템관리] 4주차 실습일지 (0) | 2021.03.28 |