리눅스 서버 & 네트워크 기초(1)

김도훈 - DevOps Engineer·2022년 6월 3일
1

linux

목록 보기
1/2
post-thumbnail
  • 즉시 종료
shutdown -P now
  • 시간 예약 (10분 후 종료)
shutdown -P +10 
  • 예약 취소
shutdown -c
  • 재부팅 (시간 예약 가능)
shutdown -r 23:00
  • 로그아웃
logout OR exit

런 레벨(Runlevel)

  • init 명령어 뒤에 붙는 숫자를 런레벨이라고 부른다.

자동 완성과 히스토리

cd /{경로} + Tab키 = 자동완성
~ history = 이전 명령어 목록 확인
~ history -c = 명령어 목록 제거

에디터 사용

  • 파일 생성 및 저장
vi -> i -> 내용입력 -> esc -> 콜론(:) -> w filename.txt(파일 이름 저장) -> 콜론(:) -> q 입력(나가기)
  • 파일 생성 및 저장2
vi filename.txt -> 내용 입력 -> esc -> wq입력(저장 + 나가기)
  • 파일 삭제
rm filename.txt -> y입력
  • 행 번호 표시
vi -> :set number 
  • 도움말 사용법
man ls - space(다음 페이지) - p(이전 페이지)

마운트와 CD/DVD 및 메모리의 활용

  • 물리적인 장치를 특정한 위치에 연결 시켜 주는 과정

  • 연결 해제

umount /filepath
  • 마운트할 폴더 연결
mount /파일 폴더 경로 /파일을 저장할 경로
  • 폴더 생성
mkdir filename

리눅스 기본 명령어

  • 해당 디렉토리에 있는 파일 목록 나열
ls /filepath
  • 숨김 파일 목록 나열
ls -a
  • 자세히 보기
ls -l

앞자리가 -이면 파일 d로 시작하면 디렉토리

  • 특정 파일 조회
ls filename.확장자 OR ls file* - 해당 이름으로 시작하는 파일 조회
  • 디렉토리 이동
cd /filepath
  • 해당 디렉토리 경로 확인
pwd
  • 최상위 경로
cd / = 최상위 경로 (root 위)
cd = root 
  • 절대경로 상대경로
cd / = 슬래쉬로 시작하면 절대경로
cd filepath = 상대경로
cd ../../../root = 상대경로
  • 크기가 0인 파일을 생성, 이미 존재하는 경우 수정 시간을 변경
touch filename
  • 파일 삭제 여부를 묻지 않고 바로 삭제
rm -f filename
  • 파일 복사
cp file1 file2 = 파일1을 파일2로 복사
  • 해당 경로의 파일을 복사
cp -r /filepath . = 현재 위치에 해당 경로에 해당하는 디렉토리까지 복사
  • 파일 위치 이동
mv fildname filepath
  • 파일 이름 변경
mv filename1 filename2 = 파일1을 파일2의 이름으로 변경
  • 새로운 디렉토리 생성
mkdir filename
  • 디렉토리 삭제
rmdir filename
  • 계층형 디렉토리 한번에 생성
mkdir -p filename/filename/filename
  • 계층형 디렉토리 삭제
rm -r filename = 하나씩 삭제 여부 확인
rm -rf filename = 하위 디렉토리까지 한번에 삭제
  • 해당 내용 출력
cat filename = 해당 파일의 전체 내용 
head filename = 해당 파일의 윗줄 10tail filename = 해당 파일의 아랫줄 10more filename = 해당 파일을 페이지 단위로 출력
  • 어떤 종료의 파일인지 확인
file filename = 비어있는지 어떤 파일인지 확인

사용자와 그룹

  • 리눅스는 다중 사용자 시스템이다.
  • 기본적으로 root라는 이름을 가진 슈퍼유저가 있으며, 모든 작업을 할 수 있는 권한이 있다.
  • 모든 사용자는 하나 이상의 그룹에 소속되어 있다.
  • 사용자는 /etc/passwd 파일에 정의되어 있다.

사용자와 그룹 관련 명령어

  • 사용자 생성시 옵션
-u : ID지정
-g : 그룹 지정
-d : 홈 디렉토리 지정
-s : 셀 지정
  • 새로운 사용자를 추가
useradd newuser
  • 사용자의 비밀번호를 지정하거나 변경
passwd newuser
  • 사용자의 속성을 변경
usermod -g root newuser
  • 사용자를 삭제
userdel newuser
  • 사용자의 암호를 주기적으로 변경하도록 설정
chage -m 2 newuser
  • 현재 사용자가 속한 그룹을 보여줌
groups
  • 새로운 그룹을 생성
groupadd newgroup
  • 그룹의 속성을 변경
groupmod -n newgroup mygroup
  • 사용자 그룹 지정
useradd -g centosGroup user2
  • 사용자 정보 조회
tail -5 /etc/passwd

user2:x:1003:1002::/home/user2:/bin/bash = 1003 그룹에 속해있다.
  • x윈도우 패키지 설치
yum -y install system-config-users

파일과 디렉터리 소유와 허가권

  • 파일 유형
    -> 디렉터리일 경우 d, 일반적인 파일일 경우 - 표시

  • 파일 허가권(Permission)

  1. rx- r-- r-- 3개씩 끊어서 읽음

  2. 첫 번째 rw- 는 소유자(User) 파일접근 권한

  3. 두 번째의 r--는 그룹(Group)의 파일접근 권한

  4. 세 번째의 r--는 그외 사용자(Other)의 파일접근 권한

  5. 숫자로도 표시 가능(8진수)

  • chmod 명령
chmod 777 sample.txt
  • 파일 소유권(Ownership)
    -> 파일을 소유한 사용자와 그룹을 의미

  • chown/chgrp 명령
    -> 파일의 소유권을 바꾸는 명령어


링크

  • 파일의 링크에는 하드 링크와 심볼릭 링크 두 가지가 있다.

  • 하드 링크를 생성하면 하드링크파일만 하나 생성되며 같은 inode1을 사용

ln basefile hardlink
  • 심볼릭 링크를 생성하면 새로운 inode2를 만들고, 데이터는 원본 파일을 연결하는 효과
ln -s basefile softlink

  • 원본 파일이 사라질 경우 심볼릭 링크도 찾을 수 없다.

RPM

자주 사용하는 RPM 명령어 옵션

  • 설치
    rmp -Uvh 패키지파일이름.rpm
    • U -> (대문자) 패키지가 설치 / 업그레이드
    • v -> 설치과정의 확인
    • h -> 설치진행과정을 # 마크로 화면에 출력
  • 삭제
    rpm -e 패키지이름
  • 이미 설치된 패키지 질의
    rpm -qa 패키지 이름 = 패키지가 설치되었는지 확인
    rpm -qf 파일의 절대경로 = 파일이 어느 패키지에 포함된 것인지 확인
  • 아직 설치되지 않은 rpm 파일에 대한 질의
    rpm -qlp 패키지파일이름.rpm = 패키지에 어떤 파일들이 포함되었는지 확인
    rpm -qip 패키지파일이름.rpm = 패키지 파일의 상세정보

YUM

  • YUM(Yellowdog Updater Modified) 개념
    • rpm 명령의 패키지 의존성 문제를 완전하게 해결함
    • 인터넷을 통하여 필요한 파일을 저장소에서 자동으로 모두 다운로드해서 설치하는 방식
  • YUM 기본적인 사용법
    • 기본 설치
    yum install 패키지이름
    yum -y install 패키지이름 = -y는 사용자의 확인을 모두 "yes"로 간주하고 설치를 진행
  • RPM 파일 설치
yum localinstall rpm파일이름.rpm
  • 업데이트 가능한 목록 보기
yum check-update
  • 업데이트
yum update 패키지이름
  • 삭제
yum remove 패키지이름
  • 정보 확인
yum info 패키지이름

YUM 고급 사용법

  • 패키지 그룹 설치
yum groupinstall "패키지그룹이름"
  • 패키지 리스트 확인
yum list 패키지이름
  • 기존 저장소 목록 지우기
yum clean all

YUM 작동 방식 설정 파일

  • /etc/yum.conf 파일 : 특별히 변경할 필요 없음
  • /etc/yum.repos.d/ 디렉터리 : yum 명령을 입력했을 때 검색하게 되는 네트워크의 주소가 들어 있는 여러 개의 파일이 있음
  • /etc/yum.repos.d/ 디렉터리의 *.repo 파일 : CentOS-Base.repo : [base], [extra] 만 남기고 [updates] 부분은 삭제했다. 즉 , 출시 시점의 원본 패키지만 설치됨

파일의 압축과 묶기

  • 파일 압축

    • 압축파일 확장명은 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 와 동일한 명령어
  • 파일 묶기

    • 리눅스에서는 파일 압축파일 묶기는 원칙적으로 별개의 프로그램으로 수행
    • 파일 묶기의 명령어는 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/ -> 압축 해제 + 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 {} \;

CRON과 AT

  • cron

    • 주기적으로 반복되는 일을 자동적으로 실행될 수 있도록 설정
    • 관련된 서비스는 "crond", 관련 파일은 "etc/crontab"
    • /etc/crontab 예
      42 4 1 * * root run-parts /etc/cron.monthly
      매월 매주 1442분에 이 /etc/cron.monthly 디렉토리 안에 있는 명령들을 자동으로 실행한다.
  • at

    • cron은 주기적으로 반복되는 작업을 예약하는 것이지만, at은 일회성 작업을 예약

    • 사용 예

    at 3:00am tomorrow -> 내일 새벽 3시
    at 11:00pm january 30 -> 130일 오후 11시
    at now + 1 hours -> 1시간 후 
    • 프롬포트에 예약 명령어 입력 후 enter
    • 완료되면 ctrl + d
    • 확인 at -l
    • 취소 atrm <작업번호>

네트워크 관련 필수 개념

  • TCP/IP
    • 컴퓨터끼리 네트워크 상으로 의사소통을 하는 프로토콜 중 가장 널리 사용되는 프로토콜의 한 종류
  • 호스트 이름과 도메인 이름
    • 호스트 이름은 각각의 컴퓨터에 지정된 이름
    • 도메인 이름은 hanbit.co.kr과 같은 형식
  • IP 주소
    • 각 컴퓨터의 랜카드에 부여되는 중복되지 않는 유일한 주소
    • 4바이트로 이루어져 있으며, 각 자리는 0~255까지의 숫자
  • 네트워크 주소
    • 같은 네트워크에 속해 있는 공통된 주소
  • 브로드캐스트 주소
    • 내부 네트워크의 모든 컴퓨터가 듣게 되는 주소
    • 현재 주소의 제일 끝자리를 255로 바꾼 주소
  • 게이트웨이, 라우터
    • 라우터 = 게이트웨이
    • 네트워크 간에 데이터를 전송하는 컴퓨터 또는 장비
    • Vmware의 게이트웨이 주소는 192.168.11.2로 고정
  • 넷마스크, 클래스
    • 넷마스크 : 네트워크 규모를 결정(예:255.255.255.0-C클래스)
  • DNS
    • URL을 해당 컴퓨터의 IP주소로 변환해 주는 서버
    • 설정 파일은 /etc/resolv.conf
    • Vmware를 사용하면 Vmware가 192.168.11.2번을 게이트웨이 및 DNS 서버로, 192.168.111.254를 DHCP 서버로 설정함

중요한 네트워크 관련 명령어

nmtui
  • 네트워크와 관련된 대부분의 작업을 이 명령어에서 수행
    • 자동 IP 주소 또는 고정 IP 주소 사용 결정
    • IP 주소, 서브넷 마스크, 게이트웨이 정보 입력
    • DNS 정보 입력
    • 네트워크 카드 드라이버 설정
    • 네트워크 장치의 설정
    • 텍스트 기반으로 작동함
  • 네트워크의 설정을 변경한 후에, 변경된 내용을 시스템에 적용시키는 명령어
systemctl <start/stop/restart/status> network
  • 네트워크 장치를 ON 또는 Off 시키는 명령어
ifup <장치이름>ifdown <장치이름>
  • 장치의 IP주소 설정 정보를 출력
ifconfig <장치이름>
  • 해당 컴퓨터가 네트워크상에서 응답하는지를 테스트하는 간편한 명령어
ping <IP주소 또는 URL>

네트워크 설정과 관련된 주요 파일

  • 네트워크의 기본적인 정보가 설정되어 있는 파일
/etc/sysconfig/network
  • ens32 장치에 설정된 네트워크 정보가 모두 들어 있는 파일
/etc/sysconfig/network-script/ifcfg-ens32
  • DNS 서버의 정보 및 호스트 이름이 들어 있는 파일
/etc/resolv.conf
  • 현 컴퓨터의 호스트 및 FQDN이 들어 있는 파일
/etc/hosts

-KT에서 제공하는 DNS 서버

168.126.63.1

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

  • 파이프
    • 두 개의 프로그램을 연결해 주는 연결통로의 의미
    • |문자를 사용함
    ex) ls -| /etc | more
  • 필터
    • 필요한 것만 걸러 주는 명령어
    • grep, tail, wc, sorc, awk, sed 등
    • 주로 파이프와 같이 사용
    ex) ps -ef | grep bash
  • 리다이렉션
    • 표준 입출력의 방향을 바꿔 줌
    ls -l > list.txt
    sort < list.txt > out.txt

프로세스, 데몬

  • 정의

    • 하드디스크에 저장된 실행코드가, 메모리에 로딩되어 활성화된 것
  • 포그라운드 프로세스

    • 실행하면 화면에 나타나서 사용자와 상호작용을 하는 프로세스 대부분의 응용프로그램
  • 백그라운드 프로세스

    • 실행은 되었지만, 화면에는 나타나지 않고 실행되는 프로세스
    • 백신 프로그램, 서버 데몬 등
  • 프로세스 번호

    • 각각의 프로세스에 할당된 고유번호
  • 작업 번호

    • 현재 실행되고 있는 백그라운드 프로세스의 순차번호
  • 부모 프로세스와 자식 프로세스

    • 모든 프로세스는 부모 프로세스를 가지고 있음
    • 부모 프로세스를 kill하면, 자식 프로세스도 자동으로 kill
  • 현재 프로세스의 상태를 확인하는 명령어

ps
ps -ef | grep <프로세스 이름>을 주로 사용함
  • 프로세스를 강제로 종료하는 명령어
kill -9 <프로세스 번호>는 강제 종료
  • 부모 프로세스와 자식 프로세스의 관계를 트리 형태로 보여 줌
pstree

서비스와 소켓

  • 서비스

    • 시스템과 독자적으로 구동되어 제공하는 프로세스를 말한다. 예로 웹 서버, DB 서버, FTP 서버 등이 있다.
    • 실행 및 종료는 대개 systemctl start/stop/restart 서비스이름으로 사용된다.
    • 서비스의 실행 스크립트 파일은 `/usr/lib/systemd/system/ 디렉터리에 서비스이름.service라는 이름으로 확인할 수 있다. 예를 들어 웹 서비스는 httpd.service라는 이름의 파일로 존재한다.
  • 소켓
    • 서비스는 항상 가동되지만, 소켓은 외부에서 특정 서비스를 요청할 경우에 systemd가 구동시킨다. 그리고 요청이 끝나면 소켓도 종료된다.
    • 그래서 소켓으로 설정된 서비스를 요청할 때는 처음 연결되는 시간이 앞에서 설명한 서비스에 비교했을 때 약간 더 걸릴 수 있다. 왜냐하면 systemd가 서비스를 새로 구동하는 데 시간이 소요되기 때문이다. 이와 같은 소켓의 대표적인 예로 텔넷 서버를 들 수 있다.
    • 소켓과 관련된 스크립트 파일은 /usr/lib/systemd/system/ 디렉토리에 소켓이름.socket 이름으로 존재한다.
profile
Email:ehgns5669@gmail.com

0개의 댓글