리눅스를 효과적으로 공부하는 방법

Jane·2021년 8월 4일
4
post-thumbnail

리얼리눅스 무료세미나 "리눅스를 효과적으로 공부하는 방법"에 나오는 내용을 학습 목적으로 정리한 글입니다.

Shell

  • terminal: 입력과 출력의 환경
  • 입력과 출력의 환경(터미널)을 기반으로 한 알맹이(=구동되는=명령어를 실제 처리하는) 프로그램이 쉘이다.
  • user program이다.
  • 명령어 반응형 프로그램
  • 우리가 쓰는 터미널은 소프트웨어로 구현된 터미널이다.

쉘을 사용하는 이유

  • GUI를 사용하는게 더 효율적인거 아닌가?
  • GUI vs CLI
    • GUI: 메모리 등 자원 소모가 크고 자동화가 불편하다.
    • CLI: 자원 소모가 작고 자동화(scripting)에 적합하며 세부적이고 다양한 기능을 활용할 수 있다.

리눅스 기본폴더 /bin

  • 기본 명령어 전용 폴더

기타 폴더

  • /sbin: 시스템 관리 관련 명령어
  • /usr/bin, /usr/sbin: 리눅스의 여러 배포판마다 유틸리티를 유지하는 부분이 달라지는데, 이 달라지는 부분들이 /usr 밑에 위치한다.

명령어

whatis

image

whereis

실행파일, 소스, 설정파일, 사용자 메뉴얼 파일 위치
image

which

실팽파일 위치
image

man

image

help

built in 명령어 확인 가능

compgen -c

지금 쓸 수 있는 모든 명령어 리스트

compgen -b cd

bash 쉘 내장 명령어 확인

패키지

실행파일, 사용자 메뉴얼 파일, 설정 파일 등의 묶음

dpkg -L vim

프로그램 패키지가 설치되었는지 확인

dpkg -L vim

프로그램 패키지 내용 확인
image

특정 기술의 키워드를 써서 설치하고 싶은 패키지명을 찾을 수 있음

기타

free

메모리 확인
image

ps -ef

모든 프로세스 확인

df -h /

스토리지 파악
image

트러블슈팅

  1. 에러 메시지를 잘 읽는다.
    에러메시지는 원인이 아니라 현상이나 결과를 나타낼 수 있다.
    root cause를 찾아가는 과정이 필요하다.

  2. 원인을 찾았으면 해당 원인을 파악할 수 있는(e.g. 어떤 포트를 누가 사용하고 있지?) 명령어에 대해 알아야 한다.

    바로 kill -9 등으로 프로세스를 강제 종료하면 최악이다. 구동중인 웹 서버를 kill -9로 강제종료할 경우 클라이언트와 커넥션 중에 있었던 자원이 제대로 해지되지 않고 비정상 종료된다. 한편, kill로 죽이면 자원이 해지된다음 종료된다.

  3. 조작하려는 파일(e.g. 소켓 관련 파일)과 전체 작동 원리에 대해 파악해야 한다.
    mysqld.sock는 DRAM에 저장되는 특수 파일이고, mysql-server에 의해 자동 생성되기 때문에 mysql-server를 재시작했을 때 문제가 해결될 가능성이 높다.


0개의 댓글