유닉스 쉘 스크립트는 유닉스 서버 관리자에게 좀더 효율적인 서버 관리를 가능하게 해주는 유용한 도구입니다. Database 공부를 해오면서 계속 쉘 스크립트를 이용해 왔지만 아직도 쉘 스크립트는 제게 공부해야할 여지가 많은 분야입니다. 그래서 IBM DeveloperWorks에 한글로 번역된 쉘 스크립트 관련 문서를 소개하려합니다.


원문 : 유닉스를 능숙하게 사용하기: 고급 셸 스크립트 기법

유닉스에는 길고 따분한 작업을 단순하게 만들기 위해 작업을 자동화하는 셸 스크립트가 있습니다. 이 기사는 셸 스크립트를 좀 더 제대로 배우기를 원하며 고급 스크립트를 작성하는 방법이 궁금한 독자들에게 팁을 제공합니다.

다른 유닉스 운영체제나 리눅스와 마찬가지로 IBM AIX 운영체제는 시스템 관리자, 개발자, 사용자가 일상 업무를 처리하고 고객 비즈니스를 단순하게 만들기 위한 여러 가지 강력한 도구를 제공한다. 유닉스에는 길고 따분한 작업을 단순하게 만들기 위해 작업을 자동화하는 셸 스크립트가 있다.

몇 년 동안 유닉스에서 셸 스크립트를 끼적거려 본 경험이 있을지라도 주로 운영체제 안팎을 파느라고 스크립트를 마스터하지는 못했을 것이다. 이 기사는 셸 스크립트를 좀 더 제대로 배우기를 원하며 고급 스크립트를 작성하는 방법이 궁금한 독자들에게 팁을 제공한다. 이 기사는 스크립트를 단순하게 만드는 방법, 스크립트를 최대로 유연하게 유지하는 방법, 깔끔한 스크립트를 작성하는 방법, 스크립트 내부에서 문서화 작업 방법, 스크립트 디버깅 방법을 포함해 일반적인 셸 프로그래밍 기본 원칙을 설명한다.


 유닉스나 리눅스 환경에서 작업을 많이 하는 분들을 Shell script를 많이 이용하게 됩니다. Shell script는 업무의 자동화에 유용하죠. 최근에는 MS에서도 자사의 윈도우즈 운영체제에 Power shell이라는 제품을 설치하여 Script를 사용할 수 있도록했죠.

 이번에 소개할 문서는 배시 셸 관련 투토리얼입니다.


원문 : 배시 셸로 작업하기



거의 모든 유닉스(UNIX®) 기반 운영체제에서 활용 가능한 배시 셸에 대한 소개 튜토리얼입니다. 배시는 성숙하고, 강력하고, 그럼에도 불구하고 사용하기 쉬운 셸이며, 자유롭게 구할 수 있습니다. 이 튜토리얼은 다른 인기 있는 유닉스 셸과 다른 점을 파악하기 위해 배시에 대한 간략한 역사를 소개하며, 배시 내부에서 제공하는 주요 기능을 살펴봅니다. 다음으로 유닉스 파일 시스템, 디렉터리와 파일 조작 방법, 배시 외양과 동작 방식을 개인화하기 위한 몇 가지 방법을 설명합니다. 마지막으로 이 튜토리얼은 배시가 제공하는 작업 제어 기능을 소개하며 끝을 맺습니다.

이 튜토리얼 내에서

  • 배시 개괄

  • 배시에서 명령 행 프롬프트로 작업하기

  • 배시에서 파일과 디렉터리 다루기

  • 배시 개인화하기

  • 배시 작업 제어

선수조건

필요한 사전 지식은 없다.


시스템 필요조건

이 튜토리얼을 읽기 위한 시스템 요구 사항은 없다. 단지 글을 읽고 배시를 익히면 된다. 하지만 이 튜토리얼을 최대로 활용하려면 튜토리얼이 제공하는 기법을 시도할 필요가 있다. 이렇게 하려면 버전 2.05 이상인 동작하는 배시 셸이 필요하다. 컴퓨터에 설치된 배시 셸 버전을 모른다면, 배시 셸 홈 페이지를 방문해 필요한 정보를 얻기 바란다.


흔히들 말하는 LAMP(Linux, Apache, MySQL, PHP) 환경의 웹서버 한대가 회사 전산실에 있습니다. 관계사의 홈페이지들이 있는데, 리눅스 마스터 자격증이 있다는 점과 PHP 개발 경력이 있다는 이유로 제가 관리를 맡았다가 다른 사람에게 넘겼는데 문제만 생기면 제가 손을 봐야하는 서버입니다.

오늘도 사이트 관련해서 볼일이 있어서 SSH로 로그인했었는데, 갑자기 백업용 Shell script를 어떻게 만들었는지 기억이 안 나더군요. 음... 한동안 안 썼더니 Shell script 작성법을 까먹어버렸었다는...
그래서 백업용으로 만들었던 Shell script를 블로그에 남깁니다. 음... 이러면 안 까먹겠죠. ^^


[root@host명 ~/util]
08:29 오후 # cat mysql_dump.sh
#!/bin/bash
# mysql_dump.sh
LOG="/home/db_backup_log/mysql_dump"

today=`date +%Y%m%d`
datetime=`date +'%Y%m%d_%H:%M:%S'`

echo "===================="
echo $datetime >> $LOG

# backup 1. DB이름
mysqldump -u root -p비밀번호 DB이름 > 파일명-$today.sql
#echo DB이름 backup completed!!

# make tarball
tar cvfz /var/www/html/db_backup/db-$today.tar.gz *-$today.sql >> $LOG

# delete the sql file
rm -f *-$today.sql >> $LOG
echo finish!! >> $LOG

datetime=`date +'%Y%m%d_%H:%M:%S'`
echo $datetime >> $LOG
echo "===================="


[root@host명 ~/util]
08:29 오후 # cat apache_log_backup.sh
#!/bin/bash
# apache_log_backup.sh
LOG="/home/apache_log_backup/backup_log"

today=`date +%Y%m%d`
datetime=`date +'%Y%m%d_%H:%M:%S'`

echo "=====================" >> $LOG
echo $datetime >> $LOG

# stop httpd
service httpd stop >> $LOG

# make tarball
tar cvfz /home/apache_log_backup/httpd_access_log-$today.tar.gz /var/www/html/log/access* >> $LOG

tar cvfz /home/apache_log_backup/httpd_error_log-$today.tar.gz /var/www/html/log/error* >> $LOG

# delete log file
rm -f /var/www/html/log/* >> $LOG
echo finish!! >> $LOG
service httpd start >> $LOG

datetime=`date +'%Y%m%d_%H:%M:%S'`
echo $datetime >> $LOG

service httpd start >> $LOG
echo "=====================" >> $LOG


너무 허접한가???

+ Recent posts