728x90
! 쉘(Shell) 이란?
- 쉘(Shell)
- 운영체제에서 제공하는 명령을 실행하는 프로그램,
- 운영체제의 관리하에 있는 파일, 프린팅, 하드웨어 장치, 애플리케이션과의 인터페이스 제공
- 키보드로부터 명령을 입력받아 OS가 그 명령을 수행하도록 하는 프로그램 - 쉘 스크립트 : 인터프리터로서 리눅스 시스템 명령어들의 집합을 묶어서 프로그램화한 것
- du -h * | sort -nr > $HOME/script.txt
! 쉘(Shell) 명령어
- du : 용량을 알아보기 위한 명령어
- | (shift + \) : 결과값을 다음 명령으로 연결해 다음 명령의 아규먼트로 사용
- sort : 알파벳 또는 숫자 기준으로 정렬. -n : 숫자값을 기준으로 정렬, -r : 반대의 순서(내림차순)
- > : 리다이렉션은 앞의 명령 결과를 다음에 나오는 파일명으로 저장
- 리눅스 bash 쉘에서 $ 표시는 일반유저의 쉘을 의미하고 # 표시는 root 유저의 쉘을 의미
- 쉘 스크립트를 작성할 때 스크립트의 최상단에 본 쉘인 경우 #!/bin/sh,
배시 쉘인 경우 #!/bin/bash,
파이썬일 경우 #!/bin/python 와 같이 실행할 언어를 지정 - which 명령어 : 실행 파일의 위치
- whereis는 명령의 실행 파일, 소스, 맨페이지의 위치를 검색하는 명령
- 리눅스 파일 시스템
- 쉘 스크립트 준비운동
- 쉘 스크립트 구성요소
- 리눅스 기본 명령어들의 형식
- 다중 명령어 사용
- 명령 히스토리
! 리눅스 디렉터리 여행
- pwd : 현재 디렉터리 위치 보기
- ls : 파일과 디렉터리 목록 보기
- ls -l로 출력된 컬럼의 의미는 아래와 같음
- [파일/디렉터리 퍼미션][하드 링크파일 수][소유자][그룹][파일 크기][수정 시간][파일명]
- cd : 현재 쉘의 디렉터리 변경, 이동
- less, more, cat : 텍스트 파일 보기
- less는 q를 누르면 원래 셀 위치의 다음 라인으로 돌아오고, more는 q를 누르면 원래 쉘 위치로 돌아오지 않음, cat은 쉘 프롬포트를 리턴
- file : 파일 타입 보기
- tree : 디렉터리의 트리 구조 print
- d : 디렉터리만 / a : 모든 것 / f : 파일만 / L : 디렉터리 깊이 지정
- tree -L1 / : 최상위 root(/) 부터 깊이가 1인 디렉터리와 파일 출력
! 파일/디렉터리 퍼미션
- 파일에 대한 접근 권한을 설정하는 것으로 `` 문자는 일반 파일, d 문자는 디렉터리, c 문자는 캐릭터 디바이스, b는 블록 디바이스, l 은 심볼릭 링크 파일, s는 소켓 파일
- 그 다음 3개의 문자 단위는 파일 소유자의 read, write, execution, 그룹의 read, write, execution, 모든 사용자의 read,write,execution을 표시
! 하드 링크 파일 수
- 하드 링크 : 리눅스상에서 동일한 파일시스템 내의 파티션에서 동일한 inode 정보를 가지는 파일
하드 링크가 복사는 아님!!! - ln 원본파일 하드링크파일명 명령을 사용해 하나의 링크 파일을 생성하면 원본 파일과 하드 링크 파일은 동일한 inode 정보를 가지게 되고, 어느 하나의 파일이 변경되면 두 파일 모두 동일한 내용과 크기로 변경
- 심볼릭 링크 : ln -s 원본파일 심볼릭링크파일명을 사용하며 원본 파일의 이름만 링크. 원본 파일을 삭제하면
심볼릭 링크 파일은 가리킬 파일명이 삭제되었기 때문에 의미없는 파일이 됨
! 리눅스 기본 디렉터리 구성
- / : 루트 디렉터리
- /boot : 리눅스 커널과 부트로더가 위치하는 디렉터리
- /etc : 시스템 환경 설정 파일이 위치한 디렉터리
- /etc/passwd : 유저의 각종 정보 저장
- /etc/shadow : 유저 패스워드를 암호화하여 저장
- /etc/fstab : 시스템이 부팅될 때 참고하는 마운트할 디바이스 테이블을 저장
- /etc/hosts : 네트워크 호스트 이름과 IP 주소
- /etc/rc.d/init.d 또는 /etc/init.d : 부팅시 시작할 여러가지 시스템 서비스 스크립트
- /etc/resolv.conf : 시스템에서 외부로 접속할 때 참고할 네임서버
- /etc/sysconfig/i18n : 부팅시 언어셋 변수와 폰트 변수를 설정
- /etc/sysconfig/iptables : 리눅스 방화벽 iptables 환경 설정
- /etc/sysconfig/network : 부팅시 네트워크를 지우너할 것인지와 호스트명을 설정
- /etc/sysconfig/network-scripts/ifcfg-eth0 : 부팅시 사용할 첫 이더넷 카드의 정보 저장
- /bin, /usr/bin : 실행 프로그램들. /bin엔 기본적인 실행 프로그램, /usr/bin엔 사용자들이 사용할 실행 프로그램
- /sbin, /usr/sbin : 시스템 관리자를 위한 프로그램. 대부분 root를 위한 프로그램
- /usr : 사용자 애플리케이션을 지원하기 위한 다양한 파일이 위치
- /usr/local : 소프트웨어 설치시 또는 로컬머신에서 사용할 파일들이 위치. 소스파일을 기본 옵션으로 컴파일하면 /usr/local 디렉터리에 기본 설치가 되며 이 때 실행 파일은 /usr/local/bin에 위치
- /var : 운영 중인 시스템의 변화를 체크할 수 있는 로그 파일들이 위치
- /var/log : 로그 파일이 위치하는 디렉터리
- /var/spool : 메일 메세지와 프린트 작업과 같이 프로세스를 위한 큐를 잡아놓기 위해 사용되는 디렉터리
- /lib : 공유 라이브러리 파일
- /home : 유저별 홈디렉터리가 존재하는 개인 홈디렉터리. useradd(adduser) 명령을 사용해 유저를 생성하면 "/home/유저아이디 형식으로 유저 홈디렉터리가 생성. 이때 기본적으로 생성되는 파일들은 /etc/skel 디렉터리 아래의 파일들임
- /tmp : 임시 파일들이 저장되는 디렉터리
- /dev : 리눅스 시스템에서 사용하는 디바이스 장치 파일들
- /proc : 이 디렉터리는 파일을 포함하지 않음. 현재 시스템 CPU 정보를 출력하기 위해 /proc/cpuinfo 파일을 출력
- 현재 프로세스의 정보가 저장되어 있음
- ps -ef를 입력하고 나오는 pid 이름으로 되어있는 폴더를 들어가보면 다양한 정보들이 나와있음
- 해당 폴더에서 cat status를 입력하면 정보들이 나오는데 주로 봐야하는 것은 VmRSS, VmSwap 등이 있음. 스왑이 되면 어떻게 되는지 문서를 볼 것
- /media, /mnt : 마운트 포인트를 위해 사용되는 디렉터리
- 마운트 : 디바이스 장치를 사용하기 위해 프로세스와 연결하는
728x90
'IT_Engineer > DevOps_Unix & Linux (Bash)' 카테고리의 다른 글
[Linux] 리눅스의 부팅 과정과 로그인 쉘 #1 (0) | 2020.11.19 |
---|---|
[Linux] 쉘과 명령어 기초 #4 (0) | 2020.11.18 |
[Linux] 쉘과 명령어 기초 #3 (0) | 2020.11.17 |
[Linux] 쉘과 명령어 기초 #1 (0) | 2020.11.13 |
[LINUX] About Linux (0) | 2020.11.12 |