쉘 스크립트 (Shell Script)
shell을 사용해서 프로그래밍을 할 수 있다.
주로 리눅스 등 서버작업의 프로그래밍 시 사용되며 생각보다 자주 사용된다.
쉘 스크립트는 파일안에 스크립트 작성 후, 실행 시 해당 스크립트가 실행되는 방식으로 이루어진다.
파일의 가장 위 첫라인은
#!/bin/bash
로 시작된다. * 이때 #는 주석을 의미하는 것이 아니다.
쉘스크립트 파일은 실행권한을 가지고 있어야 실행시킬 수 있다.
간단한 쉘 스크립트를 만들어서 실행 해보자.
$ vi forever.sh
vi [쉘 파일명]을 입력하여 쉘 파일 생성/편집 모드로 들어간다.
필자는 파일명은 forever.sh 로 만들어 보겠다.
* shell script의 파일 형식은 관습적으로 "sh" 확장자를 사용한다. 이는 정해진 규칙이라기보다 쉘 스크립트라는 것을 표시하기 위함이다.
편집모드 i 를 눌러
첫 라인에 #!/bin/bash 를 써 주고,
실행 스크립트는 echo "forever!" 로 입력해보았다.
*echo명령어는 쉘 프로그래밍 언어에서 출력문이다. "forever!"을 출력하겠다는 의미이다.
일반적인 프로그래밍 언어의 print 명령문이 되겠다.
입력 후 편집모드 종료키인 esc를 눌러 vi가 비활성화 되면
저장후 종료하라는 명령문인 :wq 를 입력하여 저장 후, vi를 종료한다.
ls -l 명령어를 사용하여 forever.sh 파일을 확인해보면
-rw-r--r-- 권한으로 즉, 실행권한이 없는 일반파일이 생성이 된 것을 확인할 수 있다.
이 경우 쉘스크립트를 실행(./forever.sh) 해보면,
실행 권한이 없기 때문에 '허가거부' 메세지가 떨어지면서 실행되지 않는다.
이 파일을 실행할 수 있도록 실행권한 chmod 755 권한을 부여해 준다.
* 퍼미션 755 설정 : 모든 사용자에게 실행 권한이 주어짐
실행권한 부여 부, forever.sh 쉘 파일을 실행하면 다음과 같이 스크립트에 입력해두었던 출력문이 실행되어
"forever!" 문구가 잘 출력이 된다.
* 실행방법
실행방법은 명령어 3가지 방법이 있다.
1) ./forever.sh
2) sh forever.sh
3) bash forever.sh
필자는 1번 방법으로 실행하였다.
다음과 같은 매커니즘으로 쉘스크립트를 실행할 수 있고
출력문이 아닌 실제 하고자 하는 작업 명령문을 입력해놓으면
길거나 여러개의 명령문을 순차적으로 실행하며
사용자 입장에서는 (실제 실행 프로세스를 모르더라도)간단히 쉘 스크립트를 실행하는 것만으로 작업실행이 가능하다.
실제 작업 명령문 ex)
+ 보너스 공부 #!/bin/bash 란?
쉘 스크립트를 만들때, 가장 첫 라인에
#!/bin/bash
를 왜 써야 하는지에 대하여 알아보자.
쉘 스크립트의 가장 첫 라인에 #!/bain/bash 를 쓰게 됨으로 해서, 내가 사용 하려는 명령어 해석기가 bash 쉘 임을 미리 알려주는 것이다.
일반적으로 스크립트에서 #는 주석기호이지만, 첫라인의 #!/bin/bash 에서의 #은 주석기호가 아니다.
#! 은 스크립트의 제일 앞에서 이 파일이 어떤 명령어 해석기의 명령어 집합인지를 시스템에게 알려주는 역할을 하며, 실행 가능한 쉘 스크립트라는 것을 나타내는 특별한 표시자이다.
#! 바로 뒤에 나오는 것은 경로명으로, 스크립트에 들어있는 명령어들을 해석할 프로그램의 위치를 나타내는데 그 프로그램이 쉘인지, 프로그램 언어인지, 유틸리티인지를 나타낸다.
이 명령어 해석기가 주석은 무시하면서 스크립트의 첫 번째 줄부터 명령어들을 실행시킨다.
거의 대부분의 상업용 유닉스 및 리눅스 에서는 기본 본쉘인 #!/bin/sh 을 사용한다.
(필자도 리눅스 환경에서 테스트 했기 때문에 #!/bin/sh 를 사용하였다. )
실제 /bin/sh 경로를 조회해보면 bash 쉘에 링크를 걸어두고 있는것을 확인할 수 있다.
즉, 스크립트를 실행하면, /bin/sh 에 연결된 bash 쉘의 기능을 사용하는 것이다.
"#!" 뒤에 나오는 경로는 정확히 Full PATH를 기록 해야 한다.
만약 PATH를 잘못 적게 되면, 스크립트를 돌렸을 때 거의 대부분 "Command not found"라는 에러 메세지를 만날것이다.
shell script를 사용하는 이유?
가장 큰 이유는 반복되는 작업을 자동화하기 위해 스크립트형태로 미리 만들어 놓고 실행만 하도록 하기 위해서이다.
이렇게 하면 스케줄링을 돌려서 파일만 실행하도록 할수도 있고 스크립트의 내용을 몰라도 누구나 실행할 수 있다.
이러한 장점을 가지고 있는 shell script는 모니터링, 데이터 백업, 복구, notification, 보안, 인증 등
여러 상황에서 많이 사용된다.
'Back-end > Linux' 카테고리의 다른 글
리눅스 운영체제란? Linux (0) | 2022.03.30 |
---|---|
[linux] top 명령어. CPU 사용률 확인 (0) | 2021.04.15 |
[linux] yum daum 저장소 설정(yum install 에러 해결: Could not resolve host: None; Unknown error) (0) | 2021.02.25 |
리눅스 퍼미션이란? Permission (chown/chmod/umask) (0) | 2021.01.20 |
Linux환경에서 Java InstallCert를 사용하여 외부 SSL/TLS인증서를 Import 하기. (0) | 2020.12.08 |