파이썬으로 airflow 설치중 다음과 같은 오류가 발생하였습니다. gcc는 GNU Compiler Collection으로 프로그램을 설치할 때 빌드를 위해서 필요합니다. 오류 L_LINUX=1 -DPSUTIL_ETHTOOL_MISSING_TYPES=1 -I/usr/include/python3.6m -c psutil/_psutil_common.c -o build/temp.linux-x86_64-3.6/psutil/_psutil_common.o unable to execute 'gcc': No such file or directory error: command 'gcc' failed with exit status 1 해결방법 yum -y install gcc
쉘스크립트 프로그래밍에서 인터럽트 시그널이 입력될 때 어떤 처리를 해야 하는 경우 사용하는 명령어가 trap 입니다. 리눅스 운영체제마다 다양한 시그널을 가지고 있고, 현 운영체제의 시그널은 kill명령어로 확인할 수 있습니다. 운영체제의 인터럽트 시그널 종류 및 번호 확인 $ kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SI..
tput 명령어는 터미널에서 화면을 제어할 수 있습니다. 커서의 위치, 화면의 배경색, 문자의 색상 등을 변경할 수 있습니다. 여기서는 간단한 사용법에 대해서 알아보겠습니다. * tput을 이용하여 화면을 clear 하고 내용을 출력하는 것을 반복하면 화면이 깜빡이는 것 처럼 보일 수 있습니다. 이는 화면 전체를 지우고 다시 처리하는 과정에서 발생하는 현상이기 때문에 화면 전체를 지우지 않고 필요한 부분으로 커서를 옮겨서 새로 출력하는 것이 좋습니다. (참고) 다음의 사이트에서 상세한 내용과 좋은 예제들을 확인할 수 있습니다. http://korea.gnu.org/manual/release/termutils/ 스크립트로 만든 휴대용 터미널 제어기 스크립트로 만든 휴대용 터미널 제어기 tput과 tabs ..
배쉬쉘은 기본적으로 정수(integer) 연산만 사용할 수 있습니다. 실수 연산을 사용하기 위해서는 bc 명령어를 이용해야 합니다. 실수 표현을 위해서는 -l 옵션을 이용해야 합니다. x=9 y=12 # 기본 설정은 정수 계산 $ echo "$x / $y" | bc 0 # -l 옵션으로 실수 표현 $ echo "$x / $y" | bc -l .75000000000000000000 # scale 설정으로 소수점 이하 출력 설정 $ echo "scale=3;$x / $y" | bc -l .750 # 소수점 이하 처리는 버림 $ echo "scale=1;$x / $y" | bc -l .7
배쉬쉘의 프롬프트 스트링(PS)은 4가지가 존재합니다. PS1: 기본 프롬프트 스트링. 기본값은 `\s-\v\$ ' PS2: 긴 문자 입력을 위해 나타나는 문자열. 기본 값은 `>` PS3: select 옵션을 처리할 때 나타나는 문자열 PS4: 실행을 디버깅할 때 출력되는 문자열 기본값은 `+` PS1을 설정하는 방법은 다음과 같습니다. 실행할 때 기본 설정으로 입력하고 싶으면 .bashrc 파일을 수정하면 됩니다. # 유저명@호스트명 경로> export PS1="\u@\h \w> " # 유저명@호스트명 [시간]>export PS1="\u@\h [\$(date +%k:%M:%S)]> " PS1, PS2, PS3, PS4: 설명: 바로가기PS1 설정: 바로가기
터미널에서 ls 명령을 이용할 때 파일 별로 구분을 위해서 color 옵션을 제공합니다. never 일때는 색상으로 구분하지 않습니다. $ ls --color=auto$ ls --color=alyways$ ls --color=never 보통 alias 로 ls 명령을 등록하고 사용하는데 LS_COLORS 환경변수를 이용해서 색상을 구분합니다. LS_COLORS="파일종류1=속성1;색1:파일종류2=속성2;색2" 의 형태로 입력하면 됩니다. LS_COLORS=rs=0:di=01;34:ln=01;36 LS_COLOR 설정 참고 -> http://linux-sxs.org/housekeeping/lscolors.html
배쉬에서 정규식 연산자는 =~ 를 이용합니다. 정규식을 이용할 때는 변수에 넣어서 처리하는 방법과 바로 이용하는 방법이 있습니다. #!/bin/bash // 변수를 이용하는 방법 re="^[0-9]+$" if [[ $1 =~ $re ]]; then echo "number" else echo "not number" fi // 연산자에 바로 이용하는 방법. 문자를 감싸주지 않음 if [[ $1 =~ ^[0-9]+$ ]]; then echo "number" else echo "not number" fi
vi에서 문자를 검색하는 명령어는 두개 입니다. /: 전진검색?: 후진검색 vi의 명령모드(ESC 입력 상태)에서 두개중 하나를 입력하고 찾으려는 문자열을 입력합니다. ALTER TABLE temp; /ALTER 62,1 22% 이렇게 되면 찾는 문자가 하일라이트 됩니다. 이후 찾은 문자를 이동하는 방법은 다음과 같습니다. n: 앞으로 이동 N: 뒤로 이동 이렇게 문자를 검색하면 찾은 문자가 계속 하일라이팅 됩니다. 이를 초기화 하는 명령어는 다음과 같습니다. 다음의 두 명령어중 하나를 명령모드에서 입력하면 기존에 입력한 검색어가 초기화 됩니다. :noh:nohlsearch
TCP/UDP 네트워크 프로그래밍을 하다보면 클라이언트나 서버를 임시로 작성해야 할 때가 있습니다. 그럴때 nc 명령어를 이용하면 따로 구현할 필요 없이 편리하게 사용할 수 있습니다 nc는 간단한 명령어로 클라이언트나 서버를 테스트해 볼수 있어서 편리한 명령입니다. 대기 명령어(서버, listen)# 9999 포트를 열어서 수신 대기 $ nc -l 9999 # 9999 포트를 열어서 다중 사용자의 수신 대기(연결이 끊어져도 계속 유지) $ nc -lk 9999 # 접속자의 IP 정보 출력 $ nc -lv 9999 접속 명령어(클라이언트, connect) nc 127.0.0.1 9999
쉘프로그램에서 전달받은 파라미터는 $ 기호를 이용하여 확인합니다. 이를 이용해서 프로그램 실행에 필요한 파라미터 개수를 확인하여 오류 여부를 전달 할 수 있습니다. $#: 전체 파라미터의 개수$0: 프로그램의 이름 $1: 첫번째 파라미터 ./sample.sh a b c d 라고 실행하면 $# = 4$0 = sample.sh$1 = a$2 = b $3 = c $4 = d가 됩니다. #!/bin/bash if [ $# -ne 원하는_매개변수_갯수 ] then echo "usage: $0 yyyymmdd hh" exit 1 fi
배쉬의 for 문에서 순차적인 숫자를 출력하는 방법은 다음과 같습니다. #!/bin/bash for vTime in {00..23} do echo ${vTime} done [결과] $ ./for.sh 00 01 02 ...23 #!/bin/bash for vTime in {1..100} do echo ${vTime} done [결과] $ ./for.sh 1 2 ...100 #!/bin/bash for vTime in 00 01 02 03 04 do echo $vTime done [결과]0001..04
배쉬에 이전에 실행한 명령어를 확인하는 history 명령어가 있다. 기본적으로 history 명령을 실행하면 다음과 같은 형태로 나온다. 1001 crontab -e 1002 history | grep cp 1003 history 이를 표현하는 형식을 명령어를 실행한 시간을 출력하기 위해서 다음과 같이 변경하면 아래의 결과를 볼 수 있다. .bashrc, .bashrc_profile 파일에 아래의 내용을 추가하고 파일을 다시 읽어 들이면 된다. export HISTTIMEFORMAT="%Y-%m-%d %T" # 히스토리 포맷 변경 export HISTSIZE=5000 # 메모리에 읽어 들이는 명령어의 개수 export HISTFILESIZE=10000 # 파일에 저장하는 명령어의 개수 1016 2018..
wait 커맨드는 프로세스의 실행 종료를 대기하게 한다. 특정 프로세스를 대기하게 할 수도 있고, 전체 프로세스의 종료를 대기할 수도 있다. wait %Background ID # jobs 로 확인할 수 있는 백그라운드 번호로 대기wait PID # PID 번호의 프로세스 대기wait # 전체 서브 프로세스 종료 대기 #!/bin/bash a &b & c & waitecho "end" 위와 같이 스크립트를 작성해서 실행하면 a, b, c의 작업이 종료되고,"end"를 출력한다.
bash의 함수는 문자열을 반환할 수 없다.상태 코드만 반환이 가능하므로 echo 를 이용하여 결과문자를 출력하고 이를 결과로 저장해야 한다. 다음과 같이 이용하면 된다. [118k]$ function fncString {> if [[ $1 == "A" ]]; then> echo "a"> else > echo "b"> fi> }[118k]$ [118k]$ VARIABLE=$(fncString "A")[118k]$ echo $VARIABLEa[118k]$ VARIABLE=$(fncString "B")[118k]$ echo $VARIABLEb
터미널용 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..
- Total
- Today
- Yesterday
- bash
- Python
- HIVE
- Linux
- emr
- Tez
- 다이나믹
- java
- ubuntu
- 알고리즘
- SQL
- nodejs
- HDFS
- airflow
- error
- build
- 오류
- hbase
- 백준
- 파이썬
- oozie
- S3
- AWS
- yarn
- SPARK
- 하둡
- mysql
- 하이브
- Hadoop
- 정올
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |