ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [TIL] 21.01.06 링크, RPM, 파일묶기, 네트워크 등
    Cloud/클라우드 아키택트 양성과정 2021. 2. 6. 22:42

    [21.01.06] 링크, RPM, 파일 묶기, 네트워크 등

     

    * 링크

    - 파일의 링크는 하드 링크, 심볼릭 링크가 있다.

    - 하드 링크 생성 시 하드 링크 파일이 생성되며 원본 파일의 inode를 가리킨다.

    - 심볼릭 링크 생성 시 새로운 inode를 생성하면서 가리키고 그 inode는 원본 파일을 가리킨다.

     

    더보기

    ※ inode?

    > 파일에 대한 정보(소유자, 권한 등)를 갖고 있다.

    > 파일의 내용이 데이터 블록에 저장되고 inode는 이 블록의 pointer를 가리킨다.

    ※ 하드 링크, cp 차이

    > cp는 새로운 inode, 새로운 데이터 블록이 생성된다.

    > 하드 링크는 같은 inode를 가리킨다.

    > 하드 링크는 원본 수정 시 변화하고 cp는 원본이 바뀌어도 그대로다.

     

    * RPM(Redhat Package Manager)

    - 프로그램 설치를 위한 파일이다.

    - '.rpm'의 확장명을 가지며, 이를 패키지라고 부른다.

    - 설치 방법 : 'rpm -Uvh 패키지이름.rpm'

    > 'U'(대문자) : 패키지 설치/업그레이드

    > 'v' : 설치 과정 살펴보기

    > 'h' : 설치 진행 과정을 "#" 표시로 화면에 출력

    - 삭제 방법 : 'rpm -e 패키지이름'

    - 특정 패키지 설치를 위해 선수되는 패키지가 있을 경우 RPM은 해결하기 힘들다.

    - 이를 해결하기 위해 DNF(또는 YUM)이 등장했다.

     

    * DNF(Dandified dnf)

    - rmp 명령의 패키지 의존성 문제가 해결됐다.

    - 인터넷을 통해 필요한 파일을 저장소에서 자동으로 모두 다운받아서 설치한다.

    - CentOS7은 YUM, CentOS8은 이것이 개선된 DNF를 사용한다.

     

    1) DNF 사용법

    > 기본 설치 : dnf install 패키지이름

    > 주로 'dnf -y' 옵션을 쓰는데, y는 사용자의 확인을 모두 yes로 하여 설치한다는 옵션이다.

    > RPM 파일 설치 : dnf install 파일이름.rpm

    > 업데이트 가능한 목록 보기 : dnf check-update

    > 업데이트 : dnf update 패키지이름

    > 삭제 : dnf remove 패키지이름

    > 정보 확인 : dnf info 패키지이름

     

    * 파일 압축/묶기, 검색

    - 압축파일의 확장명은 xz, bz2, gz, zip, Z 등이 있다.

    - xz, bz2가 압축률이 좋다.

     

    1) 압축 관련 명령어

    > xz : xz 확장명으로 압축하거나 풀어준다.

    ex) xz file (압축) / xz -d file.xz (압축 풀기)

    > bzip2 : bz2 확장명으로 압축, 풀기

    ex) bzip2 file / bzip2 -d file.bz2

    > bunzip2 : 'bzip2 -d'와 동일한 명령어다.

    > gzip : gz 확장명으로 압축, 풀기

    ex) gzip file / gzip -d file.gz

    > gunzip : 'gzip -d'와 동일한 명령어다.

     

    2) 파일 묶기

    > 리눅스(유닉스)에선 파일 압축과 파일 묶기는 별개의 프로그램으로 수행한다.

    > 파일 묶기 명령어와 묶인 파일의 확장명은 tar이다.

    ※ tar 명령어

    > 동작 : c(묶기), x(풀기), t(경로 확인)

    > 옵션 : f(파일), v(과정 출력), J(묶기+xz), z(묶기+gzip), j(묶기+bzip2)

    > 'tar [동작] [옵션] [이름] [묶을것들]' 순서로 작성한다.

    > tar 예시

    # tar cvf my.tar /etc/sysconfig/ -> c(묶기), v(과정 출력), f(파일), my.tar(압축파일 이름), /etc/sysconfig/

    # tar cvfJ my.tar.xz /etc/sysconfig/ /etc/sysconfig/ -> 묶기 + xz 압축

    # tar xvf my.tar -> tar 풀기

    # tar xvfJ my.tar /etc/sysconfig/ -> xz 압축 해제, tar 풀기

     

    3) 파일 위치 검색

    > find [경로] [옵션] [조건] [action] : 기본 파일 찾기

    > find 예시

    # find /etc -name "*.conf" -> /etc 폴더에 이름이 .conf로 끝나는 모든 파일(*) 찾기

    # find /bin -size +10k -size -100k -> /bin 폴더에 크기가 10k~100k인 모든 파일 찾기

    # find .home -name "*.swp" -exec rm { } \; -> /home 폴더에 이름이 .swp로 끝나는 모든 파일 찾고 삭제

    => '{ }'는 '-exec' 앞 까지 find 명령어 실행 결과인 swp 파일들이 매칭 된다. 그 뒤 rm 명령어가 실행되는 것.

     

    * 네트워크 관련 필수 개념

    - 리눅스에서의 네트워크 장치 이름

    => CentOS8은 랜카드를 ens160로 인식

     

    1) 관련 명령어

     

    (1) nmtui(network manager text user interface)

    > 네트워크와 관련된 대부분의 작업을 수행하는 명령어

    > 자동/고정 ip주소 사용 결정, ip주소, 서브넷 마스크, 게이트웨이 정보 입력

    > DNS 정보 입력, 네트워크 카드 드라이버 설정, 네트워크 장치(ens160) 설정

    (2) systemctl <start/stop/restart/status> NetworkManager

    > 네트워크 설정을 변경하고 그 내용을 시스템에 적용시키는 명령어

     

    2) 네트워크 설정 관련 파일

    > 이 파일들을 직접 편집하면 nmuti를 쓰지 않아도 된다.

     

    (1) /etc/sysconfig/network

    > 네트워크의 기본적인 정보가 설정된 파일

    (2) /etc/sysconfig/network-scripts/ifcfg-ens160

    > ens160 장치에 설정된 네트워크 정보가 들어 있는 파일

    (3) /etc/resolv.conf

    > DNS 서버의 정보, 호스트 이름이 들어 있는 파일

    (4) /etc/hosts

    > 현재 컴퓨터의 호스트 이름 및 FQDN(Fullt Qualified Domain Name)이 들어 있는 파일

     

    * 파이프, 필터, 리다이렉션

    1) 파이프(pipe)

    > 두 프로그램을 연결해주는 통로를 의미한다.

    > '|' 문자(여러 프로그래밍 언어에서의 or표시, shift+역슬래시 표시)로 연결

    ex) ls -l /etc | more => 'ls -l /etc'의 내용이 많기에 그 결과를 more로 보기 편하게 만든다.

     

    2) 필터(filter)

    > 필요한 것만 걸러주는 명령어이다.

    > grep, tail, wc, sort 등이 있다.

    > 주로 파이프와 같이 사용한다.

    ex) ps -ef | grep bash

    => 'ps -ef'는 모든 프로세스의 번호를 출력하고, 이 중에 'bash'라는 글자가 들어간 프로세스만 출력한다.

     

    3) 리다이렉션(redirection)

    > 입, 출력의 방향을 바꿔준다.

    ex) ls -l > list.txt => 'ls -l'의 결과를 'list.txt'파일에 저장한다. 기존 파일이 있다면 덮어쓴다.

    ex) ls -l >> list.txt => 위와 동일하며 기존 파일이 있다면 이어서 쓴다.

    ex) sort < list.txt => list.txt 파일의 내용을 정렬해서 출력한다.

    ex) sort < list.txt > out.txt => list.txt 파일의 내용을 정렬해서 out.txt 파일에 쓴다.

     

    * 프로세스, 데몬

     

    1) 프로세스

    > 하드디스크에 저장된 프로그램이 메모리에 로딩되어 활성화되어 실행 중인 상태

     

    (1) 포그라운드 프로세스(Foreground Process)

    > 실행 시 화면에 나타나서 사용자와 상호작용을 하는 프로세스

     

    (2) 백그라운드 프로세스(Background Process)

    > 화면에 보이지 않고 실행되는 프로세스

     

    (3) 프로세스 번호

    > 각 프로세스마다 고유번호를 갖고 있다.

     

    (4) 작업 번호

    > 현재 실행되는 백그라운드 프로세스의 순차 번호

     

    (5) 부모, 자식 프로세스

    > 모든 프로세스는 부모 프로세스를 갖고 있다.

    > 부모 프로세스를 kill 하면 자식 프로세스도 kill 된다.

     

    (6) 프로세스 관련 명령어

    > ps : 현재 프로세스 상태 확인 (주로 'ps -ef | grep <프로세스이름>'을 씀)

    > kill : 프로세스를 강제로 종료하는 명령어 ('kill -9 <프로세스번호>'로 강제 종료)

    > 그 외 기타 명령어를 '명령어 &'로 실행하면 백그라운드로 실행된다.

     

    * 서비스, 소켓

     

    1) 서비스

    > 시스템과 독자적으로 구동되어 제공하는 프로세스

    > 데몬이라고도 부르며 백그라운드 프로세스의 일종이다.

    > 서비스 실행 스크립트 파일은 '/usr/lib/systemd/system/' 디렉터리에 '이름.service'로 확인 가능

     

    2) 소켓

    > 서비스는 항상 가동되지만 소켓은 외부에서 특정 서비스 요청 시 systemd가 구동시킨다.

    > 요청이 끝나면 소켓도 종료된다.

    > 소켓 관련 스크립트 파일은 서비스와 동일한 디렉터리에 '이름.socket'으로 존재한다.

     

     

     

    ※ 이 게시물은 '이것이 리눅스다' 교재와 엔코아 플레이데이터에서 배운 내용을 토대로 작성되었습니다.

    댓글

Designed by Tistory.