Linux

3 분 소요

Linux

리눅스 개요

리눅스는 오픈소스 운영 체제로, 무료로 사용할 수 있는 운영 체제 중 하나 안정성, 보안성, 유연성 등의 특징으로 널리 사용됨

다양한 용도로 사용될 수 있으며, 주요 기능은 다음과 같다

  • 데이터 센터에서의 서버 운영
  • 개발자들을 위한 개발 환경
  • 임베디드 시스템에 적합한 경량화된 버전

안정성, 보안성, 성능 등의 이점으로 웹 서버 운영에 많이 사용

  • 리눅스 커널은 리눅스 운영체제의 핵심 기능을 제공
  • 리눅스의 주요 배포판 → ubuntu, CentOS, RedHat, Debian 등

CLI (Command-Line Interface)

터미널이나 가상 터미널을 통해 사용자와 컴퓨터가 상호 작용하는 방식

CLI 기본 명령어

  • pwd; 현재 위치 확인
  • mkdir [name]; 새로운 디렉토리 생성
  • ls [-옵션]; 현재 위치 디렉토리의 리스트 출력
    • 옵션 : -a, -l, -R, -r, -h, -S등 존재하며, 2개 이상 조합하여 사용이 가능
  • cd [변경위치]; 터미널의 현재 위치 변경
    • 절대경로, 상대경로, 상위 디렉토리 등으로 위치 변경 가능
  • touch [-옵션] [name]; 파일 생성하기
    • 옵션 : -a, -c, -t, -d, -r, -m 등, 2개 이상 조합하여 사용이 가능
  • echo [-옵션] [텍스트]; 터미널에 텍스트 출력
  • cat [-옵션] [파일이름]; 파일의 내용을 터미널에 출력
  • rm [-옵션] [이름]; 디렉토리 또는 파일 삭제
  • mv [-옵션] [파일이름] [이동할디렉토리]; 디렉토리나 파일의 이름을 변경하거나 위치 이동
  • cp [-옵션] [기존이름] [복사할이름]; 디렉토리나 파일 복사
  • sudo [명령어]; 관리자 권한을 획득

https://wwwaloha.oopy.io/6d209bba-226e-480a-99a9-146d45b4e9e5

https://ittrue.tistory.com/79


파일 시스템 구조

리눅스의 파일 시스템은 트리형태의 계층적 파일 시스템 구조를 제공

파일 권한

각 파일과 폴더마다 다른 권한을 설정 가능 이는 유저 접근 관리나 공유 폴더, 혹은 파일 생성 시에 용이

파일 권한&소유권 변경

파일 권한 변경

  • chmod [파일권한] [변경할 파일 위치 or 파일명]
    • 777권한은 모든 사용자가 모든 권한을 얻는다는 의미

소유권 변경

  • chown [소유할유저]:[소유할그룹] [소유권을 변경하고 싶은 디렉토리 or 파일명]
    • root 권한이 있어야 실행이 가능

https://inpa.tistory.com/entry/LINUX-📚-파일-권한-소유권허가권-💯-정리#소유권ownership


사용자 생성

사용자 계정 생성 명령어 → useradd

  • 계정이란 시스템에 ID와 암호를 생성하여 사용권을 부여하는 것을 뜻하며, 이때 사용자의 ID를 생성하는 명령어는 useradd
  • root 권한자가 root 이외의 사용자를 생성할 때는 명령어 adduser도 가능

sudo(superuser do)

  • 로그아웃 없이 root 권한으로 명령어를 실행
    • root 계정의 암호 필요
  • etc/sudoers 파일에 지정되어 있는 사용자만 사용 가능
  • sudo -s → 현재 디렉토리 유지
  • sudo -i → /root로 디렉토리 변경

패키지 관리(설치/제거)

패키지 관리자

  • 리눅스 배포판의 일부로 제공
  • 시스템에 사용되는 소프트웨어 패키지의 설치, 업데이트, 제거를 자동화
  • 패키지에 대한 정보 유지, 다른 패키지와의 상호작용 관리

주요 리눅스 패키지 관리자

  • APT : ubuntu와 Debian을 포함한 Debian 기반의 배포판에서 주로 사용
  • DNF : Fedora와 CentOS에서 사용
  • YUM : CentOS 이전 버전에서 사용되었으며, 현재는 DNF로 대체
  • Pacman : Arch Linux와, Manjaro같은 Arch 기반의 배포판에서 사용

패키지 설치 (ex APT)

sudo apt-get upadate → 설치 전 패키지 목록 업데이트

sudo apt-get install [name]

패키지 제거 (ex APT)

sudo apt-get remove [name]


시스템 자원 및 프로세스 확인

시스템 자원 명령어 → top

  • 첫번째 줄 : 동작 시간, 사용자 수, 부하 평균값
  • 두번째 줄 : 전체 프로세서 수, 동작, 슬립, 중단, 좀비 프로세스의 개수
  • 세번째 줄 : CPU 가동을 백분률로 표기
  • 네번째 줄 : 메모리 정보
  • 다섯번째 줄 : SWAP 공간 정보
  • 이하 : 프로세스 정보

메모리 자원 명령어 → free

프로세스 명령어 → ps

  • 옵션
    • l : 긴 줄 출력
    • u : 유저와 시간 출력
    • j : 작업 제어 방식 출력
    • a : 전체 유저 프로세스 현황 출력
    • x : 터미널 제어 없이 프로세스 출력

기본적인 로그 파일 분석

콘솔 로그(/dev/console)

  • 커널에 관련된 내용을 담은 로그

시스템 로그(/var/log/messages)

  • 시스템에 대한 전반적인 로그로, dmesg를 사용하여 명령어 확인 가능

보안 로그(/var/log/secure)

  • 모든 접속과 관련하여 기록된 로그
  • login, tcp_wrappers, xinetd 관련 로그가 남음

Linux Log File

로그이름 로그 파일명 설명 관련 데몬
커널 log /dev/console 콘솔에 뿌려지는 로그 kernel
시스템 log /var/log/messages 리눅스 커널로그 및 주 로그 sysload
보안 log /var/log/secure 보안 인증 관련 로그 xinetd
메일 log /var/log/maillog 메일 로그 sendmail popper
크론 log /var/log/cron crond에 의한 로그 crond
부팅 log /var/log/boot.log 시스템 부팅시의 로그 kernel
커널 부트 메시지 log /var/dmesg 부팅될 당시의 각종 메시지들 저장 kernel
커널 log /var/log/wtmp 시스템 전체 로그인 기록 저장 kernel
커널 log /var/log/utmp 현재 로그인 사용자에 대한 기록, 사용자 ip를 저장 kernel
FTP log /var/log/xferlog ftp 로그 ftp
웹 log /var/log/httpd/access_log 아파치(웹서버) 로그 저장 httpd
웹 log /var/log/httpd/error_log 아파치(웹서버) 에러 저장 httpd
네임서버 log /var/log/named.log 네임서버( 로그 name

https://azderica.github.io/00-analysis-log/


쉘 스크립트 작성법

쉘 스크립트

  • 기본적으로 .sh 확장자로 작성
  • 맨 처음 행에 #!/bin/sh 작성

변수 사용

  • 변수명은 영문자, 숫자, 언더바 사용
  • 변수에 값을 대입할 때는 = 앞 뒤에 공백 없이 작성
  • 변수에 접근할 때 변수명 앞에 $를 삽입
  • readonly를 사용하면 변수의 값 변경X
  • unset을 사용해 변수 삭제 가능

조건문

  • if문
    • if [조건] then 커맨드 fi
    • 조건과 일치하는 경우 커맨드가 실행
    • if - elif - else 구문
  • switch문
    • case 변수 in [조건 or 값] ) 커맨드 ;; esac

https://engineer-mole.tistory.com/200

태그:

카테고리:

업데이트:

댓글남기기