본문 바로가기

리눅스83

[bash] 쉘 스크립트 작성시 로그 출력을 위한 간단한 함수 쉘 스크립트 수행시 로그 출력을 위해서 다음의 함수를 이용하면 좋다. 일자 시간을 출력하기 때문에 나중에 확인하기에도 좋다. # 로그 출력 함수 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. 2016. 11. 8.
[linux][java] 캐리지 리턴, 라인피드 개행을 위한 제어 문자에는 몇가지 종류가 있는데 그중에서 가장 많이 사용하는 것이, LF, CR, CR+LF 이다. LF: Line Feed - \n (^M)CR: Carriage Return - \rCR+LF : \r\n 시스템에 따라 이중 하나만 사용해도 개행이 되는 시스템도 있고, 모두를 지원하는 시스템도 있다. 문제는 리눅스의 개행은 \n 이고, 자바는 \r, \n, \r\n을 모두 지원한다. 따라서 문자열 처리중 의도하지 않은 오류가 발생할 수 있다. 자바에서 문자열을 개항문자로 split 하여 처리하는 중 의도하지 않은 개행이 발생한다면 이로 인한 오류일 가능성이 높으므로 문자열 처리전 LF를 제거해주 면 된다. 제거 방법은 다음과 같다. :%s/^M$//g tr -d '\r' < inputf.. 2016. 11. 7.
[bash][find] 로그파일 정리하기 크론탭이나 다른 방법으로 정기적으로 프로그램을 실행하고 로그를 출력하고 나면 나중에는 로그파일이 많아지게 된다. 이럴때 로그파일을 한번 정리해야 할 필요가 있을때 다음과 같이 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.. 2016. 11. 7.
[bash] [script] 파일이 생성될 때까지 대기하는 스크립트 명령을 실행하기 위해서 hdfs나 로컬상의 경로에 파일이 생성되기를 기다려야 할 때 아래와 같이 사용한다. wc 명령으로 파일의 존재여부를 확인하여 5분에 한번씩 체크하면서 계속 대기한다. 2016. 10. 7.
[hadoop][python][linux] sudo: no tty present and no askpass program specified 오류 처리하기 하둡을 이용하여 파이썬 프로그램을 실행하던중로컬에서는 실행이 되는데, MR을 이용하여 실행하면 다음과 같은 오류가 발생하는 경우가 있다. os.system("sudo apt-get -y install python-pip") sudo: no tty present and no askpass program specified 로컬에서 바로 실행을 하면 sudo 명령을 사용할 수 있는데,mr 을이용하면 사용이 불가능하다. 이는 mr을 이용하여 실행하면, 프로그램을 실행하는 노드로 ssh를 이용하여 접속을 하고해당 프로그램을 실행시키는데 이때 mr은 yarn 계정으로 접근을 하고 이 yarn 계정은 sudo 실행 권한이 없기 때문이다. 이 문제를 해결하기 위해서는 하둡시스템의 모든 노드의 yarn 계정의 권한에 s.. 2016. 10. 5.
[bash][find] find 로 파일 검색중 Permission denied 보지 않기 find 명령어로 파일 검색중 권한이 없는 폴더를 검색하게 되면 ' Permission denied'라는 에러메시지를 보게 된다. 이럴때는 sudo 명령을 이용하여 관리자 권한으로 폴더를 검색하던지에레메시지를 null로 보내서 에러메시지가 보이지 않게 하면 된다. find / -name 파일명 2>/dev/null 2016. 8. 26.
[bash][du] 폴더별 용량 확인하기 배쉬에서 du 명령어를 이용하여 파일의 용량 확인이 가능하다. du -sh ./683M./ du -sh */40M./a236M./b212M./c.gz60K./d.txt du -sh ./*40Ma/236Mb/ 2016. 8. 25.
[bash] 배쉬 스크립트의 종료 코드 배쉬 스크립트의 종료코드란 프그그램 수행중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-.. 2016. 8. 22.
[bash] 스크립트에서 입력받은 파라미터의 개수를 확인하여 처리 쉘스크립트에서 전달받은 파라미터의 개수를 확인하는 방법은 다음과 같다. 원하는 파라미터의 개수가 아닌경우 오류를 출력한다. $# : 파라미터의 개수$1 : 첫번째 파라미터$2 : 두번째 파라미터 종료 명령에 전달하는 코드 값의 의미는 다음과 같다 0 : 성공1 : 일반적인 에러 2016. 8. 22.
[bash] 시작일자와 종료일자를 이용하여 루프문 돌리기 시작일자와 종료일자를 이용하여 지정한 일자간의 루프문을 반복하는 방법은 다음과 같다. 위의 것은 참고한 예제이고, 일반적으로 지정하는 일자형식에 맞게 변형하면 다음과 같다. 2016. 7. 13.
You have new mail in /var/spool/mail/ 메시지가 올 때 처리방법 리눅스를 사용하다 보면 아래의 메시지가 올 때가 있다. You have new mail in /var/spool/mail/ 이는 보통 크론탭으로 걸어놓은 프로그램에 문제가 있을때 발생한다. 처리 방법은 다음과 같다. 1. mail 이라고 치면 수신한 메일을 확인할 수 있다. 2. 메일 앞의 번호를 입력하면 해당 메일 확인이 가능하다. 3. 확인한 메일의 내용으로 오류를 처리한다. 4. 다 읽은 메일은 d [번호]-[번호] 명령으로 삭제하면 된다. 2016. 7. 8.
[date] date 명령으로 지정한 일자의 요일 확인하기 리죽스 쉘에서 date 커맨드를 이용하여 지정한 일자의 요일은 다음과 같이 확인할 수 있다. date -d "20160704" '+%A' 2016. 7. 4.
curl 명령어 팁 curl 명령어는 http 를 이용하여 경로의 데이터를 가져온다. # 파일 다운로드 curl -O [경로] http://ohgyun.com/397 2016. 4. 10.
[ssh] ssh 접속시 접속 여부 물어보는 부분 없이 접속하기 ssh 명령어를 이용하여 다른 서버에 접속할 때 아래와 같이 접속 가능 여부를 물어볼때가 있다. 다수의 서버에 접속하기 위해서 스크립트로 접근할때는 상당히 귀찮아 진다. 이럴때는 다음의 옵션으로 접속 여부 물어보는 부분을 없애고 접속 가능하다. Are you sure you want to continue connecting (yes/no)? ssh -o "StrictHostKeyChecking no" 주소 2016. 2. 12.
[curl] curl 명령어 처리시 부가 정보 없이 조회하기 curl 명령 사용시 아래와 같은 부가 정보가 나타나는 경우가 있다. Total % Received % Xferd Average Speed Time Time Time Current 이럴때는 -s, --silent 옵션을 이용하면 부가 정보 없이 조회가 가능하다. curl -s www.naver.comcurl --silent www.naver.com 2016. 2. 12.
bash 스크립트의 set -e 옵션 이용시 주의 사항 배쉬 스크립트를 사용할 때 set -e 옵션을 이용하여 스크립트 실행 중 오류가 발생하면 종료하게 설정이 가능하다. #!/bin/bash set -e 위와 같이 설정하여 사용한다. 에러가 나면 종료된다고 해서 잘쓰고 있었는데 사용에 주의해야 할 점이 하나있다. * 그리고 외국사이트를 검색해보니 사용을 추천하지 않더라. set -e의 경우 명령어를 실행한 리턴코드가 0이 아니면 프로그램을 종료하게 된다. 따라서 grep 같은 경우에 반환하는 값이 없으면 오류가 발생한 것이 되서 프로그램이 종료된다. 프로그램이 어떻게 실행되었는지 확인하기 위해서 grep 을 사용하여 단순 로그를 출력하는 프로그램을 작성했는데grep의 반환결과가 없어서 프로그램이 종료되어 버렸다. set -e 옵션을 이용하여 프로그램의 에러.. 2016. 1. 25.
[bash][date] date 명령어 사용하기 [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" 2015. 12. 28.
[Tip] Bash 쉘 history에서 시간 나오게 하기 [참고] - http://askubuntu.com/questions/391082/how-to-see-time-stamps-in-bash-history 환경설정에 HISTTIMEFORMAT 을 설정해주면 된다. 아래와 같이 설정하면 된다. HISTTIMEFORMAT=%F %T 2015. 12. 9.
[linux] gzip, gunzip 명령어 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 2015. 7. 1.
[linux] tar 명령어 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 압.. 2015. 6. 30.
[linux] crontab 사용방법 crontab 크론탭은 리눅스에서 주기적으로 반복되는 작업 처리를 위해 제공하는 서비스이다. 크론탭으로 실행되는 프로그램은 환경변수(JAVA_HOME, PATH 등의 정보)를 설정해주어야 한다. 스케줄러 설정 # 크론탭에 걸려 있는 스케줄 정보 확인 crontab -l # 크론탭에 신규 스케줄 추가 # 스케줄 추가후 저장하고 종료하면(vi 편집기 종료) 자동으로 스케줄에 추가된다. crontab -e # 크론탭에 스케줄 걸기 예제 분 시 일 월 요일(0:일요일, 1: 월요일) 명령어 # 5분 마다 program.sh 실행 */5 * * * * /home/user/program.sh # 4-10 시 사이에 1시간마다 program.sh 실행 0 4-10/1 * * * /home/user/program.sh.. 2015. 6. 24.
[리눅스 환경설정] 리눅스 명령어의 PATH 에 설정된 우선순위 @리눅스 명령어의 PATH 에 설정된 우선순위 동일한 이름의 명령어가 패스에 명시 되어 있을때, 앞에 위치한 명령어를 먼저 사용한다. * PATH 의 명령어 사용 export PATH=$PATH:[커맨드 패스] * 커맨드 패스의 명령어 사용 export PATH=[커맨드 패스]:$PATH 2015. 2. 2.
[Shell] 파일 용량 확인 명령어 - du 파일의 용량을 확인하는 명령어이다. 매뉴얼에 estimate file space usage 라고 되어 있음 커맨드 내용 du -h 사람이 확인 가능한 형태로 파일 사이즈를 변경(kbyte, mbyte 로 보여줌) du -sh du --max-depth=0 -h 현재 폴더의 총 용량 확인 du -sh * 현재 폴더의 하위의 디렉토리, 현재 폴더의 파일의 총 용량을 보여줌 2014. 12. 22.