ftp 압축 파일 업로드 할 때 binary 모드 사용해야 파일 깨지지 않고 정상 업로드 됩니다. (자주 까먹는 부분..;;)

 

아래 쉘은 ftp put하는 샘플 코드 입니다.

ftp -n 127.0.0.1 << EOF
quote USER $user
quote PASS $pass
cd $put_path
lcd $local_path
binary
put $file_nm
bye
EOF

 

## binary 모드로 업로드 하지 않으면 일반 텍스트 형태로 올라가 압축 해제 시 아래 에러 메시지가 발생

gzip : test.csv.gz: invalid compressed data--format violated

 

 

블로그 이미지

Heum's

IT 관련 지식 공유

 

쉘에서 date 명령어를 많이 사용하는데 여러가지 사용방법입니다. (yyyyMMdd 포맷)

 

1. 현재일자 표현 (당일)

`date +%Y%m%d`

2. 이전 날짜, 이후 날짜 표현 (과거,미래 등)

   - 아래 표현식에서 선호하는 방식 사용하면 됩니다. 

## 현재 일자에서 하루 전
`date -d '1 day ago' '+%Y%m%d'`
`date +%Y%m%d -d -1day`

## 현재 일자에서 하루 후
`date -d '1 day' '+%Y%m%d'`
`date +%Y%m%d -d +1day`

## 현재 일시에서 한시간 전
`date +%Y%m%d%H -d -1hour`

## 현재 일시에서 한시간 후
`date +%Y%m%d%H -d +1hour`

3. 입력받은 변수 날짜의 이전,이후 표현 

## 입력 받은 날짜 변수에 일 더하기
`date "--date=$dt -d +${i}day" +%Y%m%d`

## 입력 받은 날짜,시간 변수에 시간 빼기
`date -d "$dt $hh -2hour" +%Y%m%d%H`

 

 

블로그 이미지

Heum's

IT 관련 지식 공유

 

파일 인코딩 변환할 때 일일이 파일 이름 변경하지 않고 아래 명령어로 쉽게 일괄 변경 가능하네요.

 

find . -type f -execdir iconv -f euckr -t utf-8 {} -o {}.tmp \; -execdir mv -f {}.tmp {} \;



출처: https://wookmania.tistory.com/22 [코드의추억]

 

블로그 이미지

Heum's

IT 관련 지식 공유

 

shell 스크립트에서 제일 많이 사용되는 for문의 3가지 사용법입니다.

상황에 맞게 사용하시면 됩니다.

 

1. 배열로 저장한 값 읽어오는 방식

HH_ARR=("00" "01" "02" "03" "04" "05" "06" "07" "08" "09" "10" "11" "12" "13" "14" "15" "16" "17" "18" "19" "20" "21" "22" "23")
for hh in "${HH_ARR[@]}"; do
	echo $hh
done

 

2. 파일을 읽어서 처리하는 방식 (text 파일을 cat명령어로 실행하여 1줄씩 읽어옴)

for list in `cat text`
do
	echo "$list"
done

 

3. index 값 증가시키며 처리하는 방식

for (( i=0; i<10; i++ )) do
       echo "$i"
done

 

 

블로그 이미지

Heum's

IT 관련 지식 공유

 

리눅스에서 vi 또는 데몬 등 실행 스크립트를 수행해서 한글을 다뤄야 하는 경우가 있는데 별도로 설정을 해주지 않으면 한글깨짐 문제로 파일을 제대로 사용할 수가 없습니다.

그럴 경우 간단하게 아래 설정 추가하면 됩니다.

 

/etc/profile에 아래 export 추가하거나

실행하고자 하는 데몬, 스크립트에 추가해도 됩니다.

 

export LANG="ko_KR.UTF-8"

 

 

 

블로그 이미지

Heum's

IT 관련 지식 공유

 

CREATE DATABASE IF NOT EXISTS db_nm;

DROP TABLE IF EXISTS db_nm.table_nm;

CREATE EXTERNAL TABLE IF NOT EXISTS db_nm.table_nm ( 
a string comment 'a',
b string comment 'b',
c string comment 'c'
) 
comment 'table comment'
PARTITIONED BY (DT STRING) 
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\n' 
NULL DEFINED AS '' 
STORED AS TEXTFILE 
LOCATION 'hdfs://' 
;

 

블로그 이미지

Heum's

IT 관련 지식 공유

 

리눅스 서버 운영중 서비스 작동에 문제가 생기거나 에러가 발생하여 찾아보면 잦은 경우로

disk I/O Error 발생한다. 해당 디스크 접속해서 ls 명령어로 일일이 조회 해보지 않고 아래 dmesg 명령어로

한번에 disk i/o error 확인 할 수 있다.

 

dmesg | grep 'I/O error'

 

블로그 이미지

Heum's

IT 관련 지식 공유

hive에서 데이터 조회 시 파일에 헤더가 있는경우 파일에서 직접 헤더를 제거하지 않고

아래 옵션으로 대체 가능합니다.

 

스키마 마지막 줄에 아래 옵션 추가 합니다.

 

tblproperties("skip.header.line.count"="1");

1번째 라인 제거하고 데이터 조회 됩니다.

블로그 이미지

Heum's

IT 관련 지식 공유

리눅스 서버 관리할 때 해당 경로에 데이터를 주기적으로 삭제하고 싶을때

아래 명령어 crontab에 등록하여 사용하시면 좋습니다.

 

find /data1/data/log/* -type f -mtime +7 -exec rm -rf {} \; (7일 전 파일 삭제)
find /data1/data/log/* -type d -mtime +7 -exec rm -rf {} \; (7일 전 디렉토리 삭제)

 

블로그 이미지

Heum's

IT 관련 지식 공유

 

sh test.sh &>/dev/null &

 

실행 명령어에 &>/dev/null 붙여 주시면 로그 출력 없이 스크립트 실행됩니다.

 

블로그 이미지

Heum's

IT 관련 지식 공유