프로세스, 스케줄러, 압축

sso·2025년 3월 24일
0

리눅스 서버

목록 보기
12/40

295p

1. 프로세스

  • 프로그램 설치 ➡ 하드디스크 저장

  • 프로그램 실행 ➡ 주 기억장치(RAM)에서 실행

  • 실행중인 프로그램을 프로세스(PID)라고 함

  • 포어그라운드 프로세스 : 프로그램 실행 시(명령어) shell 사용이 불가능한 프로세스
    예) yes 4gl ➡ 강제 종료(Ctrl + C) 전까지는 쉘 사용을 못함

  • 백그라운드 프로세스 : 프로그램을 실행했는데 shell 사용이 가능한 프로세스
    예) pstree ➡ systemd가 가장

1-1. 프로세스 실습

bash의 pid는 3143, ps의 ppid는 3143으로 ps는 자식 프로세스, ps의 부모프로세스는 bash 임을 알 수 있음

2번째 bash가 내가 실제 사용중인 bash

쉘 세션1에서 포어그라운드 실행 후 쉘 세션2를 새로 실행 한 후

1-2. 데몬 확인하는 방법

    1. ps aux | grep crond
    1. systemctl status crond

2. 스케줄링 at

  • 경로

    /var/spool/at/

실제 실행되는 명령어

MAILTO 작업이 완료되면 메일을 어디에 보낼지 적어야함

분:시:일:월:요일:사용자이름:실행시킬명령어
7개의 필드로 구성

/etc/cron*
주기 디렉터리 밑에 동작 가능한 프로그램(스크립트)을 짜서 원하는 시간에 실행

지금 나는 매월 실행해야 함으로 /etc/cron.monthly 주기로 실행해야 한다는 사실을 알았음

run-parts /etc/cron.montholy
해당 디렉터리 내의 스크립트를 실행하라는 의미

cd /etc/cron.monthly
vi backup.sh -> 쉘스크립트 작성

#!/bin/bash -> 셔뱅. 어떠한 쉘을 사용할 것인지 선언
set (date) -> date 명령의 결과물을 쉘의 위치 매개 변수로 설정 filename="homebackup-$1$2$3.xz" tar cfJ /mybackup/filename /home

cd
mkdir /mybackup
ll /etc/cron.monthly/
chmod 755 /etc/cron.monthly/backup.sh

date 041505292025.30
systemctl restart crond
ls /mybackup/

date 현재 날짜, 시간 정보를 알 수 있는 명령어

set $(date) -> date 명령의 결과물을 쉘의 위치 매개 변수로 설정

date를 변수로 변경한 후에 filename은 homebackup-$1(2025.)$2(03.)$3(24.).xz"
= 백업 파일 이름이 homebackup-2025.03.24. 으로 생성되며 압축은 xz 옵션으로 설정

변수 사용시에는 를붙임tarcfJ/mybackup/를 붙임 tar cfJ /mybackup/filename /home
/home 디렉터리를 J(xz 압축)옵션으로 압축하며 압축할 때 위치는 /mybackup/ 이고 파일 명은 filename 변수이다.
위에서 선언한 $filename 변수값을 갖다가 씀
/mybackup 디렉터리가 없으므로 무조건 만들어줘야함
디렉터리 없으면 오류남

328p

압축 예시

tar cfz /root/mybackup.tar.gz /home
새로운 압축을 만들고 압축은 gzip옵션으로 압축하겠다. /root/mybackup.tar.gz 이라는 압축파일을 만들거고 해당 파일은 /home을 압축한것이다.

압축 해제

tar xfz /root/mybackup.tar.gz
/root/mybackup.tar.gz 압축 파일을 압축 해제해라

읽기만 해서는 실행이 안돼니까 실행 권한을 줘야함
chmod 755 /etc/cron.monthly/backup.sh
chmod a+x /etc/cron.monthly/backup.sh

실행을 확인하기 위해 현재 시간 강제 변경

date 041505292025.30
04(월) 15(일) 05(시간) 29(분) 2025(년도) .30(초)

시간이 변경될 경우 데몬에 문제가 발생할 수 있으므로 데몬 재시작
(날짜 바꾼 후에 빠르게 재시작)
systemctl restart crond

시간이 지난 후 /mybackup에 tar.zx 파일이 있으면 정상 실행 확인

명령어

1. fork

  • 복사본 형태의 프로세스를 실행함

2. exec

메모리에 새로운 프로세스 코드를 덮어씌움

find / -name '.txt' 2> /dev/null > list ➡ /(root) 전체 경로에서 이름이 .txt인 파일을 찾는데 에러가 발생하면(2>) /dev/null로 에러를 버리고 리스트로 표시해라(> list)

/dev/null ➡ 블랙홀 장치, 아무것도 출력하지 않고 받는 입력을 모두 폐기함

find / -type d 2> /dev/null > dir.txt & ➡ 전체 경로에서 타입이 디렉터리인 결과를 표시하되 오류는 버리고 dir.txt에 내용을 저장하는데 해당 명령어는 백그라운드에서 실행해라

실습 문제..

server b를 초기화 한 후 작업하시오.

시나리오)

매월 10일 새벽 4시에 /home 디렉터리를 다음과 같은 이름으로 백업하시오.

4glbackup-년도.월.일.tar.bz2

해당 백업 파일은 /4glbackup 디렉터리에 보관하도록 하시오.

시간을 변경하여 백업파일을 생성한 후 압축을 해제하여 확인하시오.

  1. crontab 파일 수정 (백업 일정 생성)

    vi /etc/crontab

    00 04 10 * * root run-parts /etc/cron.monthly/4glbackup.sh

  1. 백업 파일 생성, 실행 권한 부여
  • /home 디렉터리에 접근할 수 있는건 root

    cd /etc/cron.monthly
    vi 4glbackup.sh

    #!/bin/bash
    set $(date)
    filename="4glbackup-$6.$2.$3.tar.bz2"

    tar cfj /4glbackup/$filename /home

    chmod a+x 4glbackup.sh

  1. 백업 명령어 테스트

    tar cfj /4glbackup/test.tar.bz2 /home
    dnf -y install bzip2

    mkdir /4glbackup

  2. 스케줄러 작동 테스트

    date 041003592025.45
    systemctl restart crond
    ls /4glbackup

profile
오늘도 하나씩 해결해 나가자!

0개의 댓글