[Linux] 리눅스에서 쉘 스크립트(Shell Script)로 명령어 실행
리눅스에서 쉘 스크립트(Shell Script)를 만들어 명령어 자동실행 프로그래밍을 할 수 있다. 윈도우에서는 배치파일을 실행하면 그 안에 프로그래밍된 명령어들이 자동으로 실행되는데 윈도우 배치파일의 리눅스 버전이 쉘 스크립트이다.쉘 스크립트를 자동실행함으로써 효율적이고 간편하게 작업처리를 할 수 있다. 다만 쉘 스크립트는 인터프리터 방식으로 한줄 한줄씩 실행하여 다소 속도가 느릴 수 있다. 필자의 경우에는 데이터베이스에 저장되어 있는 특정 파일명들을 실제 리눅스에서 지울 때 쉘 스크립트를 이용하여 간단하게 삭제할 수 있었다.
- 쉘 스크립트 만들기
쉘 스크립트를 생성하기 위해 vi 편집기를 이용해 파일 하나를 만든다.
$ vi jiurinie.sh
쉘 스크립트의 맨 상단에는 쉘 스크립트가 실행될 때 어떤 쉘로 스크립트를 실행할지 정의해야 한다. 쉘에는 여러 버전이 있지만 가장 많이 쓰이는 bash쉘로 선언을 하고 아래 문장을 넣은 후 wq를 눌러 저장한다.
#!/bin/bash
echo $(date)
exit 0
- 쉘 스크립트 권한 설정
ls -al 명령어로 확인하면 쉘 스크립트의 권한을 확인할 수 있다. chmod 명령어를 통해 쉘 스크립트를 실행할 수 있도록 권한을 변경하자.
[jiurinie@playground ~]$ ls -al
total 8
drwxr-xr-x. 2 jiurinie jiurinie 27 Feb 15 17:25 .
drwx------. 5 jiurinie jiurinie 4096 Feb 15 17:21 ..
-rw-r--r--. 1 jiurinie jiurinie 31 Feb 15 17:21 jiurinie.sh
$ chmod 755 jiurinie.sh
#또는
$ chmod +x jiurinie.sh
- 쉘 스크립트 실행 방법
쉘 스크립트 실행 방법은 세가지가 있다. 앞에 sh나 bash를 붙이면 위에 설정한 실행 권한 없이도 실행이 가능하다.
[jiurinie@playground ~]$ ./jiurinie.sh
Wed Feb 15 17:36:36 KST 2023
[jiurinie@playground ~]$ sh jiurinie.sh
Wed Feb 15 17:36:58 KST 2023
[jiurinie@playground ~]$ bash jiurinie.sh
Wed Feb 15 17:37:16 KST 2023
- 쉘 스크립트 활용 예제
데이터베이스(예 : PostgreSQL)에 저장된 특정 파일들이 리눅스 파일시스템에 존재하는 경우 이 파일들을 지우고 싶을 때 다음과 같이 명령어를 생성한다. 이 명령어를 쉘 스크립트에 저장 후 실행하면 한번에 여러 명령어를 삭제 할 수 있다. 쉘 스크립트에서 변수 및 반복문을 선언하여 명령어를 생성해 사용할 수도 있으며, 파일명들이 순서대로 되어 있지 않은 경우에는 다음과 같이 사용하면 편리하다. 아래 쉘 스크립트는 파일이 존재하지 않는 예외상황은 처리하지 않았음을 감안해주길 바란다.
SELECT 'rm -rf '
|| file_name AS command
FROM (SELECT '/usr/share/attachments/FILE-'
|| Lpad(generate_series :: text, 5, '0') AS file_name
FROM generate_series(1, 5))a
#!/bin/bash
rm -rf /usr/share/attachments/FILE-00001
rm -rf /usr/share/attachments/FILE-00002
rm -rf /usr/share/attachments/FILE-00003
rm -rf /usr/share/attachments/FILE-00004
rm -rf /usr/share/attachments/FILE-00005
echo Complete!
exit 0
[jiurinie@playground ~]$ ./jiurinie.sh
Complete!
- 쉘 스크립트 문법 검사 사이트
'OS & Server > Linux' 카테고리의 다른 글
[Apache Tomcat] maxPostSize, maxParameterCount (0) | 2023.03.29 |
---|---|
[Linux] 리눅스 마운트 디렉토리 경로 변경 (6) | 2023.02.21 |
[Linux] 날짜를 기준으로 생성 및 수정된 파일 찾기 (0) | 2023.01.25 |
OpenSSL을 이용한 .PFX 인증서를 .CRT & .KEY로 변환하기 (0) | 2022.08.03 |
[Centos7] Apache 도메인 네임 리다이렉트 (0) | 2022.07.20 |
댓글