[keep updating] 리눅스 자주 사용하는 명령어, Linux Command Line Cheat Sheet

정현우·2022년 7월 31일
3

Linux Basic to Advanced

목록 보기
16/16
post-custom-banner

Linux cheat sheet

필자가 사주 사용하는 명령어를 정리하는 공간이다. 설명 전혀 없이, 코멘트와 명령어만 붙여넣을 예정이며, 지속적으로 update가 될 것 이다. option이 길어 깜빡하거나, 간헐적으로 사용하여 손에 익지 않은 명령어가 주로 이룰 것이다.

cheat sheet 시작

( 🔥 Ubuntu, MAC 중심 입니다 )

1. 특정 경로 (아래는 ~)로 부터 어디 용량 많이 차지하는지 파악

  • sudo du ~ -h --max-depth=1 | sort -hr

2. target file 에서 동일한 log count를 세고 상단 정렬해서 보여주기 / word counter 파이프라이닝하기

  • sudo awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr
  • sudo awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | wc

3. gerp으로 파일찾기, 파일 내 포함된 단어 찾기

grep -rnw '/path/to/somewhere/' -e 'pattern'
  • r or R is recursive,
  • n is line number, and
  • w stands for match the whole word.
  • l (lower-case L) can be added to just give the file name of matching files.
  • e is the pattern used during the search
  • Along with these, --exclude--include--exclude-dir flags could be used for efficient searching:
  • This will only search through those files which have .c or .h extensions:
grep --include=\*.{c,h} -rnw '/path/to/somewhere/' -e "pattern"
  • This will exclude searching all the files ending with .o extension:
grep --exclude=\*.o -rnw '/path/to/somewhere/' -e "pattern"
  • For directories it's possible to exclude one or more directories using the -exclude-dir parameter. For example, this will exclude the dirs dir1/, dir2/ and all of them matching *.dst/:
grep --exclude-dir={dir1,dir2,*.dst} -rnw '/path/to/somewhere/' -e "pattern"
  • For more options check man grep.

4. 현재경로의 -name “정규표현식" 으로 찾고, 해당하는 놈들 rm 때리기

find . -name "*.docx" | xargs rm

# 아래는 현재 경로에서 file type만 찾고 (디렉토리 제외) 이름에 2022를 포함한 모든 파일 찾고 삭제
find ./ -type f -name "*2022*" -exec rm -rf {} \;

5. MAC에서 특정 process kill 하기, mac kill by process name

  • pkill all by process name
  • 더 정확하게는 ps -ef | grep 으로 찾아진 process 들 id 값 기반으로 killall 때리기
kill -9 `ps -ef | grep 'celery' | awk '{print $2}'`
kill -9 `ps -ef | grep 'gunicorn' | awk '{print $2}'`

6. Disk Usage 명령어, depth 1 까지만 빠르게 확인하기

du -hd1
du -h --max-depth=1
du -sh *

7. (6)에 이어서 du와 ls의 표현 용량이 다를 때, (sparse file 때문, 물리적 용량 표시 vs 논리적 용량 표시 차이)

du -sh -B1 --apparent-size *

# Sparse file을 찾는 방법
find . -type f -printf "%S\t%p\n" | gawk '$1 < 1.0 {print}'

8. ls 옵션, 모든 디렉토리 및 파일 표시, 상세 보기, human옵션, 최신께 밑으로, 시간은 yyyy-mm-dd로, alias를 lt로 등록해놓고 씀

ls -alrth --time-style=long-iso
alias lt="ls -alrth --time-style=long-iso"

9. 특정 프로세스 pid (데몬 pid) 값만 얻기

pidof mongod

# 아래와 같은 방식으로 shell 에서 얻어올 수 도 있음
${pidof mongod}

10. 특정 프로세스 (parent) 개수 카운팅 하기, 이를 활용해 health check 와 re-brith, re-start shell 만들기

pgrep mongo | wc -l

# 아래와 같이 shell을 짜면 아주 간단하게(low level로 ㅎ) restart 스케쥴러 쉘을 만들 수 있다.
mongo="`pgrep mongo | wc -l`"
if [ "$mongo" -eq "0" ] ; then
        sudo service mongodb start &
fi

11. mac ssh restart

sudo launchctl unload /System/Library/LaunchDaemons/ssh.plist
sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist 

sudo launchctl stop com.openssh.sshd
sudo launchctl start com.openssh.sshd

12. mac dns cache flush

sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder

13. mongodb docker 볼륨 unlink(해제) & repair

docker run --rm --volumes-from my-mongo-server mongo unlink "/data/db/mongod.lock"
docker run --rm --volumes-from my-mongo-server mongo --repair

14. shell로 간단하게 sha-256 hash 값 만들기

echo -n any string | shasum -a 256 | awk '{ print $1 }'

15. mac, listen port, 사용중인 열린 포트 확인하기

  • sudo lsof -PiTCP -sTCP:LISTEN

  • 특정 포트를 찾아 포트를 닫고 싶으면 다음과 같이 쳐서 PID를 알아낸다.

  • sudo lsof -i :3000: 여기서 3000이 포트번호이다.

  • 위에서 나온 PID를 다음 명령어에 넣으면 포트가 닫힌다. sudo kill -9 PID

16. mac, copy & paste cli로 하기

  • pbcopypbpaste 를 통해 지금 클립보드 내용 저장 & 붙여넣기를 cli 환경에서 사용할 수 있다.

  • cat log.txt | pbcopy

  • pbpaste > log2.txt

17. certbot (simple 버전)

# 인증서 상태 체크
sudo certbot certificates

# (30일 미만만 갱신 가능) 갱신 이후 nginx restart 까지 하기
certbot renew --post-hook "systemctl restart nginx"
profile
도메인 중심의 개발, 깊이의 가치를 이해하고 “문제 해결” 에 몰두하는 개발자가 되고싶습니다. 그러기 위해 항상 새로운 것에 도전하고 노력하는 개발자가 되고 싶습니다!
post-custom-banner

0개의 댓글