728x90
반응형

쉘스크립트 21

스크립트 제어

​ 1. 시그널 처리 하기 리눅스는 30개 이상의 시스템 상에서 사용할수 있는 시그날이 있습니다. 그 중 공통적인 시그널들은 아래표에 설명이 되어 있습니다. 기본적으로 bash shell은 sigquit(3)과 sigterm(15)은 무시를 하고 SIGHUP(1)과 sigint(2)는 처리를 합니다. bash shell이 SIGHUP을 수신을 하면 Shell에서 수행되고 있는 모든 프로세스에게 SIGHUP 시그널과 SIGINT를 전달을 합니다. 그리고 리눅스 커널은 shell processing time에 cpu상에서 해당 shell을 중단을 하고 이 shell에 의해 시작된 모든 프로세스에게 이 상황을 전달하기 위해 sigint 신호를 전달을 합니다. shell script들의 기본 동작은 이런 시그널..

쉘스크립트 2022.07.06

데이터 표현하기

​ 1. 입력과 출력 이해하기 지금까지 데이터의 출력은 모니터로 보내거나 또는 파일로 보내거나를 진행해 보았습니다. 하지만 가끔은 특정 데이터는 모니터로 보내고, 특정 데이터를 파일로 보내고 싶은 경우가 있을겁니다. 그럼 지금부터 스크립트에서 어떻게 그렇게 사용할수 있는지 알아 보도록 하겠습니다. ​ 표준 파일 디스크립터 리눅스 시스템은 모든 객체를 파일로 취급을 합니다. 출력과 입력도 모두 파일로 처리가 되는데요. 이 파일 디스크립터는 음이 아닌 정수이고 하나의 세션에서 최대 9개의 파일 디스크립터를 열수 있습니다. bash shell에서는 첫번째 부터 3개의 파일 디스크립터를 예약을 해놓고 있습니다. (0번, 1번, 2번) ​ STDIN 표준 입력 파일 디스크립터는 shell로의 표준 입력값을 참조 ..

쉘스크립트 2022.07.06

사용자 입력 데이터 처리

​ 1. Command Line 파라메터 입력 스크립트에 입력 데이터를 전달 하는 방법 중 기본적인 방법은 명령어 라인에 입력 데이터를 직접 전달 하는것입니다. 전달 방법은 아래와 같이 명령어 라인에 직접 전달 하면 됩니다. $./test 10 20 ​ 파라메터 읽기 Bash Shell은 위와 같이 명령어 라인에 입력되는 데이터를 처리 하기 위해 positional parameter라고 하는 특별한 변수를 할당 합니다. 이 변수는 $0 ~ $9번까지 할당이 가능하고 0번은 스크립트 파일의 이름이 저장되고 1번 부터 순차적으로 명령어 라인에 입력된 값들을 저장하게 됩니다. ​ 예제를 하나 만들어 봅시다. #!/bin/bash # 명령어 라인에서 데이터 한개 입력 받기. factorial=1 for (( n..

쉘스크립트 2022.07.06

세부 구조적인 Shell 명령어

​ 1. For 명령어 For 명령어는 반복적인 일을 처리할때 아주 유용한 명령어 입니다. 사용구문은 아래와 같습니다. for var in list do commands done 반복적인 변수의 입력은 list를 통해서 제공을 해야 됩니다. do 와 done 사이에 실행할 명령어들을 입력을 시킵니다. ​ List에서 변수값 읽기 리스트를 사용하는 방법 중 하나는 아래와 같이 space로 값들을 분리 하여 나열하는 방법 입니다. #! /bin/bash # for 문에서 list 사용하는 예제 for test in seoul busan daegu daejun incheon kwangju do echo the next city is $test done # 실행을 시켜보면 아래와 같이 도시명들이 한줄씩 출력이 ..

쉘스크립트 2022.07.06

구조화된 명령어들

​ 1. If then 구문 사용하기 if-then 구문 스크립트에서 가장 많이 사용되는 구문중에 하나로 If ~ then문이 있습니다. 이 구문은 if 뒤에 정의되는 명령어들의 실행결과가(exit code 0) 정상수행이 되면 then 구문의 명령이 실행이되고 exit code가 0이 아니고 다른 code로 들어오면(명령어 정상 수행되지 않음) then문이 수행이 되지 않습니다. 기본적인 구문은 아래와 같습니다. ​ - 사용 구문 if command then commands fi ​ if command; then commands fi ​ 그럼 /etc/passwd 에 해당 사용자가 있으면 사용자의 bash shell파일을 리스트 하는 예제를 만들어 보겠습니다. $touch test10 $gedit te..

쉘스크립트 2022.07.06

기본 Shell 스크립트 작성

1. 한라인에서 명령어 여러개 수행하기 한개의 명령어 라인에서 여려개의 명령을 실행할때에는 명령어 사이에 세미콜론으로 분리하면 됩니다. $ date ; who Mon Sep 24 19:44:35 EST 2007 rich :0 2007-09-24 18:23 (console) rich pts/1 2007-09-24 18:24 rich pts/0 2007-09-24 18:42 barbara pts/2 2007-09-24 19:30 katie pts/3 2007-09-24 19:39 $ ​ 2. 스크립트 파일 작성하기 스크립트 파일을 작성할때에 항상 첫째줄에는 사용할 Shell을 아래와 같이 정의를 해야 합니다. $ touch test1 $gedit test1 #! /bin/bash # this is test ..

쉘스크립트 2022.07.05

리눅스 파일 퍼미션

​ 1. 리눅스 시스템 보안 리눅스 시스템의 보안 핵심은 사용자 계정이다. 각각의 사용자는 로그인할때 어떤 사용자로 로그인 하느냐에 따라 권한이 부여가 됩니다. 이러한 권한의 설정은 /etc/passwd파일에 정보가 담겨 있습니다. $ cat /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin..

쉘스크립트 2022.07.05

환경 변수

리눅스 환경에서는 두가지 환경 변수가 있습니다. 하나는 Global 환경 변수이고, 다른 하나는 로컬 환경변수 입니다. Global 환경 변수는 리눅스 시스템의 전체에서 보여지는 환경 변수이고, 글로벌 환경변수는 모두 대문자로 생성이 됩니다. ​ 1. Global 환경변수 와 Local 환경 변수 확인 하는 방법 Global 환경변수를 보는 명령은 printenv이고 리눅스 시스템 로그인시 디폴트로 설정되는 값들이 보여 집니다. 아래 그림 참고 하시기 바랍니다. [printenv 출력 화면] 위의 화면에서 보듯이 Global 환경 변수의 종류가 너무 많습니다. 그럼 특정 변수만 보고 싶을때는 어떻게 해야 될까요? 'echo'명령을 사용하면 됩니다. 예를 들어서 HOME 환경 변수를 보고 싶다면 echo ..

쉘스크립트 2022.07.04

Bash Shell 명령어들

​ 1. 모티터링 프로그램 리눅스에서 실행되는 프로그램들은 프로세스로 취급이 됩니다. 이런 프로세스를 확인하는 명령어로는 ps 명령이 있습니다. [PS 실행화면] PID는 프로세스 ID번호를 알려주고 해당 프로세스가 어느 터미널에서 실행이 되었는지를 TTY 정보를 통해 알수 있습니다. 그리고 TIME은 해당 프로세스가 CPU는 사용한 시간을 나타내고 어떤 프로세스(명령어) 실행이 되었는지를 CMD를 통해 알수 있습니다 ps는 옵션 파라메터를 통해 더 자세한 정보를 알수 있는데 보통 많이 쓰는 옵션은 ef입니다 아래 화면은 ps에서 사용가능한 옵션들과 ps -ef(전체 조회) 실행화면을 보여 줍니다. 앞에서 단순히 ps를 실행 했을때와는 다르게 몇가지 필드가 더 보여 집니다. UID는 해당 프로세스를 실행..

쉘스크립트 2022.07.04

Bash Shell 기본 명령어

1. Starting Shell 기본적으로 사용자별 사용할 Shell의 설정은 etc/passwd 파일에 설정되어 있습니다. 아래의 예제는 root 사용자는 기본적으로 /bin/bash shell을 사용하게 설정되고 다른 Shell을 사요하고 싶다면 아래그림에서 마지막 부분값을 변경해 주면 터미널 실행시 해당 Shell이 실행이 됩니다. [기본 사용 Shell설정] 컬럼순으로 보면 사용자이름:패스워드:사용자 ID: 그룹ID:풀네임: 홈디렉토리: 사용할 Shell로 표시가 됩니다. ​ 2. Shell Prompt 리눅스 시스템에서 터미널을 열면 기본적으로 프롬프트는 아래 그립처럼 $로 표시가 됩니다. [기본 프롬프트] 기본 프롬프트의 구성은 사용자 이름@호스트 네임:현재 디렉토리 형태로 구성되어 있습니다...

쉘스크립트 2022.07.04
728x90