-
[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'으로 존재한다.
※ 이 게시물은 '이것이 리눅스다' 교재와 엔코아 플레이데이터에서 배운 내용을 토대로 작성되었습니다.
'Cloud > 클라우드 아키택트 양성과정' 카테고리의 다른 글
[TIL] 21.01.08 네트워크 기본 개념 (0) 2021.02.15 [TIL] 21.01.07 웹 , 웹 문서, 웹 서버, WAS, HTTP, 크롤링 (0) 2021.02.07 [TIL] 21.01.05 가상화, 컨테이너, CentOS 설치, Linux 명령어 실습 (0) 2021.02.02 [TIL] 21.01.04 리눅스(VMware Workstation) 설치 및 설정 (0) 2021.01.28 [TIL] 20.12.30 조별 프로젝트(쇼핑몰 프로젝트) (0) 2021.01.26