발생일: 2013.10.11 문제: 서버가 죽으면 해당 로그를 파일로 저장해두려고 한다.파일명에 현재 시간을 포함해두려고 하는데, 쉘에선 날짜를 어떻게 포맷팅하지? 해결책: http://www.cyberciti.biz/faq/linux-unix-formatting-dates-for-display/ `date` 명령의 파라미터로 `+"포맷"`을 전달하면 된다. # 현재 시간을 `년월일-시분`으로 출력한다. 예) 131110-1530$ date +"%y%m%d-%H%M"
발생일: 2013.10.04 문제: 서버 모니터링 용도의 쉘 스크립트(Bash)를 짜고 있다.`monitor.sh`을 실행하면, 서버를 띄우고 이 프로세스를 주기적으로 확인하고,프로세스가 죽은 경우 에러 처리를 하고 다시 띄우도록 할 생각이다. 이 때 자식 프로세스로 실행한 서버의 PID를 파일에 저장해두고 확인하려고 하는데,쉘 스크립트에서 자식 프로세스의 PID를 어떻게 가져올 수 있을까? 해결책: http://serverfault.com/questions/222424/bash-child-proccess-pid-how-do-you-get-it `$$` 변수로 현재 실행중인 프로세스의 아이디를 가져올 수 있고,`$!` 변수로 가장 최근에 실행한 자식 프로세스의 아이디를 가져올 수 있다고 한다. 굿. :)
발생일: 2013.03.05 문제: 압축 파일을 다운로드 받아주는 간단한 쉘 스크립트를 작성하고 있다.아래와 같이 사용자 입력을 받아서, 다운로드 후 압축을 풀어주고 싶다. 압축을 해제할까요~? (y/n) 쉘 스크립트에서 프롬프트 입력은 어떻게 처리하면 될까? 해결책: read 커맨드를 사용하면 되고,위처럼 프롬프트 문자열 후에 한 글자만 받고 싶다면 아래와 같이 사용하면 된다. $ read -n 1 -p "Unzip all files? (y/N)" -n 옵션은 입력받을 캐릭터 수를 의미하고,-p 옵션은 프롬프트 전에 출력할 문자열을 의미한다. read 커맨드로 읽어온 문자열은 REPLY 변수에 저장된다.입력받은 문자열은 아래와 같은 방식으로 분기할 수 있다. $ [[ $REPLY == [yY] ]] &..
발생일: 2013.01.24 문제: 얼마 전 만든 커맨드라인 영어사전인 ndic 모듈에 새로운 기능을 붙여보려고 한다. 생각해둔 건 탭 자동완성 기능이다. 커맨드라인에서 단어를 검색하다보니,입력하던 도중에 철자를 틀리거나, 단어의 뒷 부분을 까먹어서 제대로 검색되지 않는 경우가 있더라. `ndic symp` 다른 커맨드라인 명령어에서처럼,ndic 명령 이후에 탭을 입력했을 때 비슷한 단어 목록을 제시해주면 꽤 쓸만할 것 같다. 기존 명령어의 탭 자동완성은 주로 폴더 내 파일 목록을 보여주는데,위와 같이 커스텀 명령에 적용하면서, 목록을 다이나믹하게 생성할 수도 있을까? 해결책: 요즘 많이 사용 하는 BASH Shell과 Z Shell의 방법이 다르긴 하지만, 둘 다 가능하다.여기서는 일단 BASH에 관해..
발생일: 2013.01.16 문제: 어젯밤부터 간단한 노드 모듈을 만들어보고 있다.얼마 전 배시(BASH)를 익혔던 터라, 자바스크립트 대신 배시 파일로 만들어보기로 했다. 배시 파일을 작성하다보니,에디터에서 수정하고 쉘로 넘어가 실행하는 횟수가 많아지더라. 1. 에디터에서 저장 2. Alt + Tab으로 쉘로 이동 3. 화살표 ↑ 로 최근 명령 실행 4. 다시 Alt + Tab으로 에디터로 이런 식으로 작업하고 있는데, 아무래도 이거 넘 귀찮다. 배시 파일을 모니터링 해서,파일이 변경되면 바로 쉘을 실행하도록 하면 테스트하기 굉장히 편할 것 같은데,좋은 방법이 없을까? 해결책:검색해보니, 이런 용도의 파일 모니터링 도구가 많더라. 가장 대표적인게 inotify tools 인 것 같다. https://g..