Posts 운영 시 유용한 명령어 모음
Post
Cancel

운영 시 유용한 명령어 모음

서버 운영을 하면서 자주 쓰이거나 자주 까먹는 명령어를 정리해봤다. 계속해서 업데이트 할 예정이다.

LINUX


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 용량 확인
서버전체: df -h
특정폴더: du -sh /경로
iNode: df -i

# 파일 분할
용량기준: split -b 100M original.dat new_file.dat
라인기준: split -l 100000 original.csv new_file.csv

# 기간 지난 파일 삭제
find /경로 -mtime +100 -exec rm -rf {} \;     (생성된지 100일 지난 파일 삭제)

# 파일 내 특정 단어 찾기
1. grep -R "찾을단어"
2. find ./ -depth -exec grep '찾을단어' {} \; -print

# 인코딩 확인 및 변경
확인: file -bi 파일명
변경: iconv -c -f euc-kr(현재인코딩) -t utf-8(바꿀인코딩) original.txt(파일명) > new_file.txt(인코딩 변경 파일명)

# 파이썬 오프라인 설치
./python2.7 -m pip install --no-index --find-links="./" requests-2.22.0.tar(수동으로 옮긴 파일명)

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# 하둡 용량 확인
전체: hdfs dfs -df -h
폴더별: hdfs dfs -du -h /경로

# 파일 목록 확인
hdfs dfs -ls /경로/

# 파일 내용 보기
hdfs dfs -cat /경로/파일명

# 서버 <-> 하둡 파일 복사
로컬 -> 서버: hdfs dfs -copyFromLocal /로컬경로 /서버경로
서버 -> 로컬: hdfs dfs -copyToLocal /서버경로 /로컬경로

# 파일 삭제
파일: hdfs dfs -rm /경로/파일명
폴더: hdfs dfs -rm -R /경로
** -skipTrash 명령어 추가 시 완전삭제 (hdfs dfs -rm -skipTrash /경로/파일명)

# 테이블 repair (hive 외부에서 파일을 넣거나 뺐을때 테이블 갱신)
msck repair table 테이블명;

# Hive UDF 등록 (Jar)
ADD jar hdfs://경로/파일명.jar;
CREATE TEMPORARY FUNCTION 함수명 AS 'com.chaedae.Test클래스경로';

SELECT 함수명(파라미터)
FROM 테이블명;

# Hive UDF 등록 및 사용 (Python)
ADD FILE hdfs://경로/파일명.py;

SELECT TRANSFORM(파라미터) USING '파일명.py' AS test
FROM 테이블명;

# Hive 데이터 추출
hive -e 'select * from 테이블명' | sed 's/[\t]/,/g' > 로컬경로

# Hive 조회 시 테이블명 제거
SET hive.resultset.use.unique.column.names=false;

# Hive Dynamic Partition (파티션 테이블에 데이터 넣을 때 필요)
SET hive.exec.dynamic.partition.mode=nonstrict;

Postgres


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
31
32
33
34
35
36
37
38
39
40
41
# 기본 명령어
테이블 목록: \dt
함수 목록: \df
테이블스페이스: \db
스키마 목록: \dn
뷰 목록: \dv
테이블 상세: \d+ 테이블명

# 테이블 스페이스 용량 확인
SELECT spcname, pg_size_pretty(pg_tablespace_size(spcname)) from pg_tablespace;

# 실행중인 쿼리 확인
SELECT * FROM pg_stat_activity;

# LOCK 확인
SELECT  t.relname
        ,l.locktype
        ,page
        ,virtualtransaction
        ,pid
        ,mode
        ,granted
FROM    pg_locks l, pg_stat_all_tables t
WHERE   l.relation=t.relid
ORDER   BY relation ASC;

# 파일 열기
\o /로컬경로/파일명;

# 파일 읽기 (작성된 쿼리)
\i /로컬경로/파일명;

# CSV 추출
COPY (SELECT * FROM 테이블명) TO '로컬경로/파일명.csv' DELIMITER ',' CSV;

# CSV Insert
COPY 테이블명(컬럼명) FROM '로컬경로/파일명.csv' WITH (FORMAT CSV);

# 시퀀스 초기화
ALTER SEQUENCE 시퀀스명 RESTART WITH 1;

Kafka


1
2
3
4
5
6
7
8
# 시간 기준 특정 Offset 가져오기
tp = TopicPartition('그룹ID', 0)
consumer.offsets_for_time({tp:123456789012345}) # 15자리 Timestamp
{TopicPartition(topic='topic', partition=0): OffsetAndTimestamp(offset=1234, timestamp=123412341234)}

consumer.seek(tp, 1234)
consumer.poll()

This post is licensed under CC BY 4.0 by the author.

Kafka 데이터 연동

-

Comments powered by Disqus.