쉘기능을 자유자재로 다루기_09 명령어가 실패한 시점에 종료해 스크립트 오작동 방지하기
출처 : 유닉스 리눅스 쉘스크립트 예제사전_한빛미디어
명령어: set, cd, rm
키워드: 종료 스테이터스, 명령어, 실패, 정지
사용처: 어떤 중요한 처리를 하는 스크립트에서 도중에 명령어가 하나라도 실패하면 거기서 정지하고 싶을 때
실행예제
$ ./set-e.sh
./set-e.sh: line 12: cd: /var/log/myapp-: No Such file or directory
$ ls
set-e.sh test.log (test.log가 남아 있음)
스크립트
#!/bin/sh
# 명령어 종료 스테이터스가 0이 아니라면
# 스크립트를 바로 ...
쉘기능을 자유자재로 다루기_08 리다이렉트가 번잡하지 않도록 그룹핑해서 보기 좋게 만들기
출처 : 유닉스 리눅스 쉘스크립트 예제사전_한빛미디어
명령어: echo
키워드: 리다이렉트, 그룹핑
사용처: 여러 명령어 결과를 같은 파일에 리다이렉트해서 출력하는 걸 한꺼번에 묶어서 작성하고 싶을 때
실행예제
$ ./echo-redirect.sh
$ cat output.log
[Script start]
Sat Jan 18 22:21:22 KST 2014
echo-redirect.sh
output.log
script.sh
[Script end]
스크립트
#!/bin/sh
# 중괄호를 그룹핑해서 리다이렉트를 하나로 합치기
{
echo "[Script start]"
dat...
쉘기능을 자유자재로 다루기_07 이식성을 고려한 외부 명령어 이용하기
출처 : 유닉스 리눅스 쉘스크립트 예제사전_한빛미디어
명령어: uname, echo
키워드: 범용성, 이식성, OS
사용처: OS마다 명령어 동작이 달라 각각 명령어를 변수로 정의하고 싶을 때
실행예제
$ ./os-command.sh
이것은 줄이 이어진 메시지 입니다.
스크립트
#!/bin/sh
# echo 명령어 경로를 환경에 따라서 바꿔서 셸 변수 ECHO에 대입
case $(uname -s) in
# Mac 이면 셸 내장이 아니라 bin/echo 사용
Darwin)
ECHO="/bin/echo"
;;
*)
ECHO="...
쉘기능을 자유자재로 다루기_06 scp로 파일 전송할 때 CPU 이용률을 계산해서 압축 처리를 할 것인지 판단하기
출처 : 유닉스 리눅스 쉘스크립트 예제사전_한빛미디어
명령어: time, scp, awk, bc
키워드: CPU 바운드, I/O 바운드, 처리 시간, 측정
사용처: 스크립트 실행 시간과 CPU 사용 시간을 측정해서 전체 실행 시간 대비 CPU 사용률을 알고 싶을 때
실행예제
$ ./time-scp.sh
transfer.dat 100% 18MB 9.0MB/s 00:02
scp 전송 CPU 사용률 : 66.98 (%)
스크립트
#!/bin/sh
# 테스트 전송 파일명, 전송할 곳 등 정의
username="user1" # ssh 사용자명 --------------...
쉘기능을 자유자재로 다루기_05 늘 지정한 환경 변수를 설정해서 명령어를 실행하도록 래퍼 스크립트 작성하기
출처 : 유닉스 리눅스 쉘스크립트 예제사전_한빛미디어
명령어: exec
키워드: 래퍼, 환경 변수
사용처: 래퍼 스크립트를 작성하고 싶을 때
실행예제
$ ./exec.sh -o output.txt <-------- myappd가 실행됨
스크립트
#!/bin/sh
# TMPDIR 환경 변수 설정
TMPDIR="/disk1/tmp"
export TMPDIR
# exec 명령어로 myappd 실행. 명령행 인수를 "$@"로 넘김
exec ./myappd "$@" #------------ 1
해설
이 스크립트는 환경 변수 TMPDIR을 “/disk1/tmp...
쉘기능을 자유자재로 다루기_04 이상 종료해도 흔적을 남기지 않도록 종료 시 작업 파일을 삭제하는 뒷처리하기
출처 : 유닉스 리눅스 쉘스크립트 예제사전_한빛미디어
명령어: trap, rm
키워드: 임시 파일, 종료, 시그널, 트랩
사용처: 임시 파일을 사용하는 스크립트에서 정상 종료든 강제 종료든 상관없이 공통된 종료 처리를 하고 싶을 때
실행예제
$ ./sig-exit.sh
^C <----------------------------------- Ctrl + C로 강제 종료해도
$ ls
sig-exit.sh calcA.sh calcB.sh <-------- 임시 파일은 남아 있지 않음
스크립트
#!/bin/sh
# 임시 파일을 정의, 빈 파일로 초기화
tmpfile="...
쉘기능을 자유자재로 다루기_03 HUP 시그널을 받아서 실행 중에 설정 파일을 다시 읽어들이기
출처 : 유닉스 리눅스 쉘스크립트 예제사전_한빛미디어
명령어: trap, uptime, .(닷 명령어)
키워드: 시그널, 끼어들기, 트랩, 리로드
사용처: 실행 중인 스크립트의 설정 파일이 바뀌어도 프로세스를 멈추지 않고 다시 설정 파일을 읽어들이고 싶을 때
실행예제
$ ./sig-hup.sh
$ kill -s HUP <프로세스 ID> <---- 스크립트를 실행한 채로 setting.conf를 수정하고, 다른 터미널에서 시그널을 보내서 파일 출력할 곳이 변한 걸 확인
스크립트
#!/bin/sh
# 환경 초기화 셸 함수, 로그 출력할 곳을 설정한 setting...
195 post articles, 28 pages.