리눅스
이것이 리눅스다 - 서버를 구축하는데 알아야 할 필수 개념과 명령어 03
록's
2023. 3. 10. 18:14
728x90
반응형
서버를 구축하는데 알아야 할 필수 개념과 명령어 01 >>> https://rogi221.tistory.com/129
서버를 구축하는데 알아야 할 필수 개념과 명령어 02 >>> https://rogi221.tistory.com/131
파일의 압축과 묶기(1)
파일 압축
- 압축파일 확장명은 xz, bz2, gz, zip, Z 등
- xz나 bz2 압축률이 더 좋음
파일 압축 관련 명령
- xz : 확장명 xz로 압축을 하거나 풀어준다
- 예) xz 파일명 xz -d 파일명.xz
- bzip2 : 확장명 bz2로 압축을 하거나 풀어준다
- 예) bzip2 파일명 bzip2 -d 파일명.bz2
- bunzip2 : “bzip2 -d”옵션과 동일한 명령어
- gzip : 확장명 gz으로 압축을 하거나 풀어준다
- 예) gzip 파일명 gzip -d 파일명.gz
- gunzip : “gzip -d”옵션과 동일한 명령어
파일의 압축과 묶기 (2)
파일 묶기
- 리눅스(유닉스)에서는 ‘파일 압축’과 ‘파일 묶기’는 원칙적으로 별개의 프로그램으로 수행
- 파일 묶기의 명령어는‘tar’이며, 묶인 파일의 확장명도‘tar’이다
파일 묶기 명령(tar)
- tar : 확장명 tar로 묶음 파일을 만들어 주거나 묶음을 풀어 준다
- 동작 : c(묶기), x(풀기), t(경로확인)
- 옵션 : f(파일), v(과정보이기), J(tar+xz), z(tar+gzip), j(tar+bzip2)
- 사용 예
- # tar cvf my.tar /etc/sysconfig/ → 묶기
- # tar cvfJ my.tar.xz /etc/sysconfig/ /etc/sysconfig/ → 묶기 + xz 압축
- # tar xvf my.tar → tar 풀기
- # tar xvfJ my.tar.xz /etc/sysconfig/ → xz 압축 해제 + tar 풀기
파일 위치 검색
- find [경로] [옵션] [조건] [action] : 기본 파일 찾기
- [옵션] -name, -user(소유자), -newer(전,후), -perm(허가권), -size(크기)
- [action] -print(디폴트), -exec (외부명령 실행)
- 사용 예
- # find /etc -name "*.conf“
- # find /bin -size +10k -size -100k
- # find /home -name "*.swp" -exec rm { } \;

- which 실행파일이름 : PATH에 설정된 디렉터리만 검색
- whereis 실행파일이름 :실행 파일,소스,man페이지 파일까지 검색
- locate 파일이름 : 파일 목록 데이터베이스에서 검색
시스템 설정
- 표준 시간대 변경(설정 >> [날짜 및 시각])
- 네트워크 설정 (nmtui)
- 방화벽 설정(firewall-config)
- 서비스 설정(ntsysv)
CRON과 AT (1)
cron
- 주기적으로 반복되는 일을 자동적으로 실행될 수 있도록 설정
- 관련된 데몬(서비스)은“crond”, 관련 파일은 “/etc/crontab”
- /etc/crontab 예
- 01 * * * * root run-parts /etc/cron.hourly
- 02 4 * * * root run-parts /etc/cron.daily
- 03 4 * * 0 root run-parts /etc/cron.weekly
- 42 4 1 * * root run-parts /etc/cron.monthly
- 첫 줄은 매시간 1분에 /etc/cron.hourly 디렉터리 안에 있는 명령들을 자동으로 실행한다
CRON과 AT (2)
at
- cron은 주기적으로 반복되는 작업을 예약하는 것이지만, at는 일회성 작업을 예약
- 사용 예
- 예약 : # at <시간>
- 예) # at 3:00am tomorrow → 내일 새벽 3시
- # at 11:00pm January 30 → 1월 30일 오후 11시
- # at now + 1 hours → 1시간 후
- at> 프롬프트에 예약 명령어 입력 후 [Enter]
- 완료되면 [Ctrl] + [D]
- 확인 : # at -l
- 취소 : # atrm <작업번호>
네트워크 관련 필수 개념 (1)
TCP/IP
- 컴퓨터끼리 네트워크 상으로 의사소통을 하는 “프로토콜” 중 가장 널리 사용되는 프로토콜의 한 종류
호스트 이름(Hostname)과 도메인 이름(Domain name)
- 호스트 이름은 각각의 컴퓨터에 지정된 이름
- 도메인 이름(또는 도메인 주소)는 hanbit.co.kr과 같은 형식
IP 주소
- 각 컴퓨터의 랜카드에 부여되는 중복되지 않는 유일한 주소
- 4바이트로 이루어져 있으며, 각 자리는 0~255까지의 숫자
- 예) Server의 IP 주소는 192.168.111.100
네트워크 주소
- 같은 네트워크에 속해 있는 공통된 주소 (예 : 192.168.111.0)
네트워크 관련 필수 개념 (2)
브로드캐스트(Broadcast) 주소
- 내부 네트워크의 모든 컴퓨터가 듣게 되는 주소
- 현재 주소의 제일 끝자리를 255로 바꾼 주소(C클래스)
게이트웨이(Gateway), 라우터(Router)
- 라우터 = 게이트웨이
- 네트워크 간에 데이터를 전송하는 컴퓨터 또는 장비
- VMware의 게이트웨이 주소는 192.168.111.2로 고정
넷마스크(Netmask) & 클래스(Class)
- 넷마스크 : 네트워크의 규모를 결정(예:255.255.255.0–C클래스)
DNS(Domain Name System) 서버(= 네임 서버) 주소
- URL을 해당 컴퓨터의 IP주소로 변환해 주는 서버
- 설정 파일은 /etc/resolv.conf
- VMware를 사용하면 VMware가 192.168.111.2번을 게이트웨이 및 DNS 서버로, 192.168.111.254를 DHCP 서버로 설정함.
리눅스에서의 네트워크 장치 이름
- CentOS 8은 랜카드를 ens160 인식함
- 이전버전에서는 eth0, eth1, ens32, ens33 등으로 인식했음.
- VMware에 CentOS를 설치할 경우에는 Vmware 버전에 따라서 완전히 다른 이름으로 인식할 수도 있음.
중요한 네트워크 관련 명령어 (1)
nmtui
- 네트워크와 관련된 대부분의 작업을 이 명령어에서 수행
- 자동 IP 주소 또는 고정 IP주소 사용 결정
- IP주소, 서브넷 마스크, 게이트웨이 정보 입력
- DNS 정보 입력
- 네트워크 카드 드라이버 설정
- 네트워크 장치(ens160)의 설정
- 텍스트 기반으로 작동함
systemctl <start/stop/restart/status> NetworkManager
- 네트워크의 설정을 변경한 후에, 변경된 내용을 시스템에 적용시키는 명령어
ifup <장치이름> 및 ifdown <장치이름>
- 네트워크 장치를 On 또는 Off 시키는 명령어
ifconfig <장치이름>
- 장치의 IP주소 설정 정보를 출력
nslookup
- DNS 서버의 작동을 테스트하는 명령어
ping <IP주소 또는 URL>
- 해당 컴퓨터가 네트워크상에서 응답하는지를 테스트하는 간편한 명령어
네트워크 설정과 관련된 주요 파일
/etc/sysconfig/network
- 네트워크의 기본적인 정보가 설정되어 있는 파일
/etc/sysconfig/network-scripts/ifcfg-ens160
- ens32 장치에 설정된 네트워크 정보가 모두 들어 있는 파일
/etc/resolv.conf
- DNS 서버의 정보 및 호스트 이름이 들어 있는 파일
/etc/hosts
- 현 컴퓨터의 호스트 이름 및 FQDN이 들어 있는 파일
네트워크 보안을 위한 SELinux
- SELinux(Security Enhanced Linux)는 보안에 취약한 리눅스를 보호하기 위해 탄생
- 강제(Enforcing), 허용(Permissive), 비활성(Disabled) 세 가지 레벨
- 설정 파일인 /etc/sysconfig/selinux를 편집하거나, system-config-selinux 명령으로 설정
- 작동 방식
- ‘강제(Enforcing)’는 시스템 보안에 영향을 미치는 기능이 감지되면 아예 그 기능이 작동되지 않도록 시스템에서 막아줌.
- ‘허용(Permissive)’은 시스템 보안에 영향을 미치는 기능이 감지되면 허용은되지만 그 내용이 로그에 남음.
- ‘비활성(Disabled)’은 SELinux를사용하지 않음
파이프, 필터, 리디렉션
- 파이프(pipe)
- 두 개의 프로그램을 연결해 주는 연결통로의 의미
- “|”문자를 사용함
- 예) # ls -l /etc | more
- 필터(filter)
- 필요한 것만 걸러 주는 명령어
- grep, tail, wc, sort, grep, awk, sed 등
- 주로 파이프와 같이 사용
- 예) # ps -ef | grep bash
- 리디렉션 (redirection)
- 표준 입출력의 방향을 바꿔 줌
- 예) ls -l > list.txt
- soft < list.txt > out.txt
프로세스, 데몬 (1)
- 정의
- 하드디스크에 저장된 실행코드(프로그램)가, 메모리에 로딩되어 활성화된 것
- 포그라운드 프로세스(Foreground Process)
- 실행하면 화면에 나타나서 사용자와 상호작용을 하는 프로세스
- 대부분의 응용프로그램
- 백그라운드 프로세스(Background Process)
- 실행은 되었지만, 화면에는 나타나지 않고 실행되는 프로세스
- 백신 프로그램, 서버 데몬 등
- 프로세스 번호
- 각각의 프로세스에 할당된 고유번호
- 작업 번호
- 현재 실행되고 있는 백그라운드 프로세스의 순차번호
프로세스, 데몬 (2)
- 부모 프로세스와 자식 프로세스
- 모든 프로세스는 부모 프로세스를 가지고 있음
- 부모 프로세스를 kill 하면, 자식 프로세스도 자동으로 kill 됨
- 프로세스 관련 명령
- ps
- 현재 프로세스의 상태를 확인하는 명령어
- “ps -ef | grep <프로세스 이름>”을 주로 사용함
- kill
- 프로세스를 강제로 종료하는 명령어
- “kill -9 <프로세스 번호>”는 강제 종료
- pstree
- 부모 프로세스와 자식 프로세스의 관계를 트리 형태로 보여 줌
- ps
서비스와 소켓(1)
서비스
- 시스템과 독자적으로 구동되어 제공하는 프로세스를 말한다. 예로 웹 서버(httpd), DB 서버(mysqld), FTP 서버(vsftpd) 등이 있다.
- 실행 및 종료는 대개 ‘systemctl start/stop/restart 서비스이름’으로 사용된다.
- 서비스의 실행 스크립트 파일은 /usr/lib/systemd/system/ 디렉터리에
‘서비스이름.service’라는 이름으로 확인할 수 있다. 예를 들어 Cron 서비스는 crond.service라는 이름의 파일로 존재한다.
소켓
- 서비스는 항상 가동되지만, 소켓은 외부에서 특정 서비스를 요청할 경우에 systemd가 구동시킨다. 그리고 요청이 끝나면 소켓도 종료된다.
- 그래서 소켓으로 설정된 서비스를 요청할 때는 처음 연결되는 시간이 앞에서 설명한 서비스에 비교했을 때 약간 더 걸릴 수 있다. 왜냐하면 systemd가 서비스를 새로 구동하는 데 시간이 소요되기 때문이다. 이와 같은 소켓의 대표적인 예로 텔넷 서버를 들 수 있다.
- 소켓과 관련된 스크립트 파일은 /usr/lib/systemd/system/ 디렉터리에 소켓이름.socket라는 이름으로 존재한다
GRUB 부트로더(1)
GRUB 부트로더의 특징
- 부트 정보를 사용자가 임의로 변경해 부팅할 수 있다. 즉 부트 정보가 올바르지 않더라도 수정하여 부팅할 수 있다.
- 다른 여러 가지 운영체제와 멀티부팅을 할 수 있다.
- 대화형 설정을 제공하므로 커널 경로와 파일 이름만 알면 부팅이 가능.
GRUB2의 장점
- 셸 스크립트를 지원함으로써 조건식과 함수를 사용할 수 있다.
- 동적 모듈을 로드할 수 있다.
- 그래픽 부트 메뉴를 지원하며 부트 스플래시 성능이 개선되었다.
- ISO 이미지를 이용해서 바로 부팅할 수 있다.
- 설정 파일의 형식이 변경되었지만 더 향상된 내용을 포함할 수 있다.
GRUB 부트로더(2)
GRUB2 설정 방법
- /boot/grub2/grub.cfg 설정파일 (직접 변경하면 안됨)
- /etc/default/grub 파일과 /etc/grub.d/ 디렉터리의 파일을 수정한 후에 ‘grub2-mkconfig’ 명령어를 실행해 설정함.
/etc/default/grub 파일
모듈의 개념과 커널 컴파일의 필요성
- 모듈 : 필요할 때마다 호출하여 사용되는 코드
커널 컴파일(업그레이드)
- 커널 컴파일 순서
728x90
반응형