Shell
.zshrc
, .gitconfig
등 내가 사용하는 설정 파일과 쉘 명령어 모음.
.zshrc
alias gg="git lg --all"
alias gzxc="git checkout master && git pull"
alias gclear='git fetch --prune && git branch | grep -v "develop" | grep -v "master" | grep -v "main" | xargs git branch -D'
alias zxc="cd ~/Desktop/repos"
alias ll="ls -hl"
.gitconfig
[user]
name = Doowonee
email = doowonee.com@gmail.com
[core]
editor = vim
[alias]
# show graph with colors
lg = log --graph --pretty=format:\"%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%ci) %C(bold blue)<%an> %Creset\" --abbrev-commit
.ssh/config
Host *
IdentityFile /Users/doowonee/Desktop/something.pem
StrictHostKeyChecking no
Shell scripts
# remove lines from file
# 파일 특정 라인 삭제
sed -i 1,2600445d something.log
# in macOS -i option needs backup extension
# remove line included "POST"
# 파일중 특정 단어가 포함된 라인 삭제
sed -i "" '/POST/d' wb-2022-03-11_10-46-14.log
# show files order by file size DESC
# 파일 크기 큰 순서대로 보기
sudo du -h /var | sort -h
# find removed file but opened
# 삭제된 파일중 프로세스가 접근 중인 파일 찾기
sudo lsof | grep "/var" | grep deleted
# find file with content
# 파일 내용으로 파일 찾기
ack -l "Something" path/logs/
# jq
# JSON 유틸 jq
jq '.' 1.json >> 1-formatted.json
# crontab
# in crontab % = new line use `\` for escaping
# 크론 탭 사용법 % 문자는 개행 취급이라 \로 이스케이프 필요
17 22 * * * root rm -rf /home/logs/$(date -d 'now - 4 days' +'\%Y\%m\%d')
# stress-ng
# 스트레스 테스트 툴
stress-ng --cpu 4 -p 80 --timeout 12s
stress-ng --vm 3 --vm-bytes 4g -t 20s -v
# remove git branch with pattern
# 특정 git 브렌치 삭제
git branch | grep "<pattern>" | xargs git branch -D
# show longest line from file
# 파일에서 가장 긴 라인 보기
awk 'length > max_length { max_length = length; longest_line = $0 } END { print longest_line }' ./file.log
# save stdout with stderror
# 실행 stdout를 파일로 저장
cargo run -p payment --example m3_2254 |& tee run.log
# remove terminal color
# 터미널 색상 코드 제거
sed -r "s/\x1B\[([0-9]{1,3}(;[0-9]{1,2})?)?[mGK]//g"
# EC2 instance ID 조회하기 AWS EC2에서만 동작
curl -s http://169.254.169.254/latest/meta-data/instance-id
# make file size zero
# 파일 내용 비우기
truncate -s 0 /var/lib/docker/containers/**/*-json.log
linux disk management
sudo lsblk -f
# hot storage
sudo file -s /dev/nvme1n1
sudo mkfs -t ext4 /dev/nvme1n1
sudo mkdir /hot-data
sudo mount /dev/nvme1n1 /hot-data
sudo chown -R ubuntu:ubuntu /hot-data
# cold storage
# 데이터 용량이 클수록 mkfs가 오래 걸린다 2TB면 1시간 걸린다는데?ㄷ
sudo file -s /dev/nvme2n1
sudo mkfs -t ext4 /dev/nvme2n1
sudo mkdir /cold-data
sudo mount /dev/nvme2n1 /cold-data
sudo chown -R ubuntu:ubuntu /cold-data
# UUID 확인
sudo blkid
# 32GB 할당 했는데 30G 사용 가능이고 256GB 할당 했는데 239G 사용 가능 무엇?
# 이유는 https://askubuntu.com/questions/79981/df-h-shows-incorrect-free-space 참고
# /etc/fstab에 아래 행 추가해서 재부팅해도 자동으로 마운트 되도록 설정
# defaults는 https://wiki.debian.org/fstab 참고
UUID=9cd1fc7b-1423-4833-909b-9f9119cd2f9e /hot-data ext4 defaults,nofail 0 2
UUID=84464544-0f11-4968-a79b-cf675edb5000 /cold-data ext4 defaults,nofail 0 3
# fstab 변경한 설정이 잘되나 확인
# 참고로 현재 워킹 디렉토리에 들어 간채로 umount 하면 busy라고 안된다 다른 디렉토리로 이동 하고 해야 한다
sudo umount /cold-data && sudo umount /hot-data && sudo mount -a