터미널용 GUI 를 개발하기 위해서 라이브러리를 찾아보던 중에 ncurses 를 이용하면 처리할 수가 있다고 해서 기록한다. 다행히 한글로 번역된 문서가 있어서 개발하는데 도움이 될 것 같다. https://ko.wikipedia.org/wiki/Ncurses프로그래밍 방법(한글) - https://wiki.kldp.org/wiki.php/NCURSES-Programming-HOWTO#s-1.1.1한글 출력 - https://bakyeono.net/post/2015-05-12-ncurses-korean-utf-8.htmlhttps://www.gnu.org/software/ncurses/
리눅스 커맨드 상에서 xml 문서의 포맷을 검사하거나, xpath를 이용하여 문서를 탐색하기 위해서 xmllint 명령어를 이용한다. xmllint --format [파일경로]경로의 문서가 xml포맷에 맞는지 검사하고, 들여쓰기를 한 문서를 반환한다. xmllint --validate [파일경로]문서에 저징된 DTD에 맞는 문서인지 확인한다. xmllint --xpath [xpath 표현식] [파일경로]지정한 xpath에 따라 문서를 탐색하여 결과를 반환한다 http://xmlsoft.org/xmllint.html
파일을 라인단위로 나누기 위한 split 명령어는 다음과 같이 사용한다. -l 100 : 100 줄단 위로 나눔-d : 숫자로 된 이름의 파일로 분할-a : 나누어진 파일 이름의 사이즈 origintxt 파일을 100줄 단위로 나눈다. $ split -l 100 origin.txtxaaxabxac... origintxt 파일을 100줄 단위로 나누는데, 파일이름을 숫자형식으로 한다. $ split -l 100 -d origin.txtx01x02x03... origintxt 파일을 100줄 단위로 나누는데, 파일이름을 숫자형식으로 하고, 파일이름의 사이즈는 4이다. $ split -l 100 -d -a 4 origin.txtx0001x0002x0003... https://ss64.com/bash/split..
ls 명령어를 이용하여 파일 목록을 볼때 --time-style 옵션을 이용하면 파일 생성 시간을 사용자가 원하는 형태로 출력할 수 있다. 아래와 같은 형태로 출력이 가능하다. - 기본타입: full-iso, long-iso, iso- 타임포맷: date 포맷 형식 ls -alh --time-style=full-isodrwxrwxr-x 6 hadoop hadoop 4.0K 2017-06-27 01:43:40.754322656 +0000 . ls -alh --time-style=long-isodrwxrwxr-x 6 hadoop hadoop 4.0K 2017-06-27 01:43 . ls -alh --time-style=isodrwxrwxr-x 6 hadoop hadoop 4.0K 06-27 01:43 . ..
grep 명령어는 파일에 일치하는 문자열이 있으면 출력하는 역활을 한다. -n : 라인번호 출력-f : 파일명 출력-v : 일치 하지 않는 것 출력 grep 으로 문자열이 일치하는지 확인할 때 다음과 같이 확인할 수도 있다. . : 문자열 하나[] : 괄호로 묶인 만자 중 하나가 존재하는지 확인cat raw.txt | grep "temp.ex" | grep "text.[a|b]"ex) tempaex 처럼 temp와 ex 사이에 하나의 문자만 존재하고, textka, textkb 처럼 text와 a, b 사이에 하난의 문자가 존재할 때 확인 grep 의 주요 옵션 - http://geundi.tistory.com/113
다른 서버로 ssh 명령어를 이용하여 접속할 때 처음 접속하는 서버이면 Are you sure you want to continue connecting ? yes/no 와 같이 접속여부를 확인하는 부분이 나타난다. 보안을 위한 사항이긴 하지만 스크립트를 이용하여 연속적인 명령을 하려고 할때는 이 부분으로 인하여 다음 작업 처리가 안되게 된다. 이럴 때는 다음의 옵션을 이용하여 처리하면 된다. ssh -o StrictHostKeyChecking=no user@127.0.0.1
특정 문자열과 일치하는 내용을 가지고 있는 파일을 확인하고 싶을 때 grep 을 이용하여 내용을 확인할 수 있다. -L, --files-without-match Suppress normal output; instead print the name of each input file from which no output would normally have been printed. The scanning will stop on the first match. -l, --files-with-matches Suppress normal output; instead print the name of each input file from which output would normally have been printed. T..
리눅스의 파일은 파일명으로 실제 파일을 구분할 수 없기 때문에 압축파일의 형식을 파일명으로 단정할 수 가 없다. 파일명과 압축형식이 다를경우 압축형식을 확인하기 위해서는 file 명령어를 이용하면 된다. 아래와 같이 파일명과 정보를 확인할 수 있다. > file gzip-file.gzgzip-file.gz: gzip compressed data, was "gzip-file", last modified: Tue Feb 21 05:41:25 2017, from Unix > file tar-file.tartar-file.tar: POSIX tar archive (GNU) > file tar-gz-file.tar.gztar-gz-file.tar.gz: gzip compressed data, last modifi..
리눅스 서버의 시간을 동기화 할 때는 rdate 커맨드를 이용한다. * 영구한 시간 동기화는 ntp 를 이용한다. ** ntpd 를 이용하여 시간 동기화*** ntpq -p 명령을 이용하여 현재 서버의 동기화 상황을 확인 가능 rdate -p time.bora.net: 원격서버(ntp 서버)의 시간을 출력 rdate -s time.bora.net: 원격서버의 시간을 이용하여, 현재 서버의 시간을 설정 rdate 커맨드 설명 - http://www.tutorialspoint.com/unix_commands/rdate.htmntpq 출력내용의 의미 - http://krids.tistory.com/83
로컬PC와 서버의 파일전송을 위해서 ftp를 설치하여 이용하였는데, sz, rz 커맨드를 이용하면 ftp를 이용하지 않고 파일을 전송하는 것이 가능하다. sz, rz 커맨드를 이용하기 위해서는 lrzsz 커맨드를 설치해야 한다. yum이나 apt-get 을 이용하여 커맨드를 인스톨한다. yum -y install lrzsz rz sz [파일명] 이렇게 입력하면 파일을 업로드, 다운로드가 가능하다. * 주의할 점은 ZMODEM 프로토콜을 구현한 접속 프로그램에서만 사용가능하다. ex) XShell, SecureCRT, PuTTy
쉘 스크립트 수행시 로그 출력을 위해서 다음의 함수를 이용하면 좋다. 일자 시간을 출력하기 때문에 나중에 확인하기에도 좋다. # 로그 출력 함수 function fncPrintLog(){ vLogTime=`date '+%Y-%m-%d %H:%M:%S'`; vLogTime=${vLogTime:0:19} echo "[${vLogTime}] "${1}} fncPringLog "start."처럼 사용하면 되고 출력은 아래와 같다. [2016-11-08 05:07:01] start.
크론탭이나 다른 방법으로 정기적으로 프로그램을 실행하고 로그를 출력하고 나면 나중에는 로그파일이 많아지게 된다. 이럴때 로그파일을 한번 정리해야 할 필요가 있을때 다음과 같이 find 명령어를 이용하여 처리하면 된다. 어제자 이름으로 생성된 파일을 압축하고, 7일전 파일은 삭제한다. * find로 검색한 파일을 압축할 때도 사용가능 #!/bin/bash cd /mnt/crontab/hive_metadb_check/ vYesterDayYYYYMMDD="*`date -d "yesterday" -u +\%Y\%m\%d`*"v7DayPrevYYYYMMDD="*`date -d "-7 day" -u +\%Y\%m\%d`*" # 어제자 로그 파일 정리 find ./logs/ -name "*${vYesterDayYYY..
배쉬 스크립트의 종료코드란 프그그램 수행중exit 명령으로 프로그램을 종료시키면서 사용자에게 프로그램 종료의 이유를 알리기 위하여 반환하는 값이다. exit 함수는 정수형 값을 반환할 수 있다. 이를 $? 명령어를 이용하여 확인이 가능하다. 사용자가 임의의 정수(255 이하)를 반환하는 것도 가능하며, 예약되어 있는 반환 값은 다음과 같다 0 : 정상적인 종료1 : 일반적인 에러127 : command not found130 : Ctrl + C 에 의 한 종료 https://wiki.kldp.org/HOWTO//html/Adv-Bash-Scr-HOWTO/exitcodes.html#EXITCODESREFhttps://wiki.kldp.org/HOWTO//html/Adv-Bash-Scr-HOWTO/exit-..
배쉬 스크립트를 사용할 때 set -e 옵션을 이용하여 스크립트 실행 중 오류가 발생하면 종료하게 설정이 가능하다. #!/bin/bash set -e 위와 같이 설정하여 사용한다. 에러가 나면 종료된다고 해서 잘쓰고 있었는데 사용에 주의해야 할 점이 하나있다. * 그리고 외국사이트를 검색해보니 사용을 추천하지 않더라. set -e의 경우 명령어를 실행한 리턴코드가 0이 아니면 프로그램을 종료하게 된다. 따라서 grep 같은 경우에 반환하는 값이 없으면 오류가 발생한 것이 되서 프로그램이 종료된다. 프로그램이 어떻게 실행되었는지 확인하기 위해서 grep 을 사용하여 단순 로그를 출력하는 프로그램을 작성했는데grep의 반환결과가 없어서 프로그램이 종료되어 버렸다. set -e 옵션을 이용하여 프로그램의 에러..
[date 함수 사용] Date 함수는 쉘에서 날짜를 입력하는데 유용하게 사용할 수 있다. -d 옵션을 이용하여 시간 지정도 가능하므로, 지정한 일자를 유용하게 사용할 수 있다. #!/bin/bash # UTC 시간 date -u # 시간 수정 date -d -1days # 1일전 date -d +1days # 1일후 # 시간 출력 포맷 date +\%Y-\%m-\%d # 포맷에 맞는 시간 출력 # 날짜 시간 지정 및 1 시간 전date "+%Y%m%d %H" -d "20161115 01:00:00 1 hour ago" # 날짜 시간 지정 및 1 시간 후date "+%Y%m%d %H" -d "20161115 01:00:00 1 hour"
gzip gzip 은 파일의 압축을 위한 명령이다. gzip 은 하나의 파일만 압축을 할 수 있다. 여러 개의 파일이나 디렉토리를 압축하기 위해서는 tar 로 먼저 묶어주어야 한다. tar –zcf test.tar.gz file1 file2 … 옵션 설명 v 압축 관련 정보를 출력 d 압축을 해제, gunzip 과 동일, decompress 명령어 # 파일 압축 gzip target gzip -v target # 압축 해제 gzip -d target.gz gzip -dv target.gz gunzip target.gz
tar tar 명령어는 여러 개의 파일을 하나의 파일로 묶기 위한 명령어 이다. 자주 사용하는 옵션은 다음과 같다. 옵션 설명 c tar 파일 압축 생성 x tar 파일 압축 해제 t tar 로 압축된 파일의 리스트 확인 v 처리과정을 출력(t 옵션과 사용하면 파일의 상세정보 확인) f 압축 파일명, 압축 해제 파일명을 지정 z gzip 압축을 tar 압축과 동시에 처리 명령어 # tar -cvf [생성할 tar 파일명] [압축대상 파일1] [압축대상 파일2] tar -cvf file.tar 1.txt 2.txt # tar -tvf [목록을 확인할 tar 파일명] tar -tvf file.tar # tar -xvf [해제할 tar 파일명] tar -xvf file.tar # tar 과 동시에 gzip 압..
- Total
- Today
- Yesterday
- build
- Linux
- 다이나믹
- 정올
- HDFS
- emr
- 파이썬
- 하둡
- 오류
- 백준
- hbase
- airflow
- Tez
- Python
- SPARK
- Hadoop
- bash
- HIVE
- SQL
- oozie
- nodejs
- error
- 하이브
- yarn
- mysql
- ubuntu
- java
- S3
- 알고리즘
- AWS
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |