쉘기능을 자유자재로 다루기_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...
쉘기능을 자유자재로 다루기_02 스크립트 실행할 때 시그널을 받아서 현재 실행 상태 출력하기
출처 : 유닉스 리눅스 쉘스크립트 예제사전_한빛미디어
명령어: trap, nc, sleep
키워드: 시그널, 끼어들기, 트랩
사용처: 처리 시간이 긴 셸 스크립트를 실행하는데 프로세스를 정지하지 않고 내부 실행 상태를 표시하고 싶을 때
실행예제
$ ./sig-usr1.sh
Connection to 192.168.2.105 80 port [tcp/http] succeeded!
Connection to 192.168.2.105 80 port [tcp/http] succeeded!
Connection to 192.168.2.105 80 port [tcp/http] succeeded!
Try Co...
쉘기능을 자유자재로 다루기_01 함수나 if문 같은 히어 도큐먼트를 쓸 때 탭 정렬로 보기 좋게 만들기
출처 : 유닉스 리눅스 쉘스크립트 예제사전_한빛미디어
명령어: cat
키워드: 히어 도큐먼트, 들여쓰기, 인텐트, 탭
사용처: 함수 블록이나 if문 등 들여쓰기가 필요한 곳에 히어 도큐먼트도 들여쓰고 싶을 때
실행예제
$ ./here-indent.sh "My Title"
# 히어 도큐먼트 자체는 앞머리에 탭이 있지만 출력에는 탭이 없음
<html>
<head>
<title>My Title</title>
</head>
<body>
<p>Auto HTML Sample.</p>
</body>
...
221 post articles, 32 pages.