서버 운영을 하면서 자주 쓰이거나 자주 까먹는 명령어를 정리해봤다. 계속해서 업데이트 할 예정이다.
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()