이것이 리눅스다(11) - 필수 개념과 명령어(파일 압축과 묶기, 파일 위치 검색, 시스템 설정, CRON과 AT)

2 minute read

파일 압축과 묶기

윈도우에서는 알집을 통한 파일의 압축과 묶기 기능이 동시에 이루어지지만 리눅스에서는 따로 진행해야 한다.

파일 압축

  • xz <파일명> or gzip <파일명> or bzip2 <파일명>: 파일 압축.
  • xz -d <파일명.xz> or gzip -d <파일명.gz> or bzip2 -d <파일명.bz2>: 파일 압축 해제.

다양한 압축 방법이 있지만 x2나 bz2가 압출률이 더 좋다.

파일 묶기

  • tar cvf <묶음 파일 이름> <파일 경로...>: 파일 묶기.
  • tar xvf <묶음 파일 이름>: 파일 풀기.
  • 묶기와 압축을 한꺼번에 수행하는 옵션: J(tar+xz), z(tar+gzip), j(tar+bz2). 예를 들어 bzip2로 압축을 한다면 tar cvfj <묶음 파일 이름.tar.bz2> <파일 경로...>

파일 위치 검색

  • find <경로> <옵션> <조건> <action>: 기본 파일 찾기. – 옵션: -name(이름): find /etc -name "*.conf“, -user(사용자), -newer(전, 후), -size(크기): find /bin -size +10k -size -100k, -perm(허가권).

※ 명령어 이어쓰기
find /home -name "*.swp" -exec rm { } \;와 같은 명령어를 통해 find로 찾은 파일에 또 다른 명령어를 줄 수 있다. 이 명령어는 다음과 같은 메커니즘으로 수행된다.

시스템 설정

방화벽 설정

외부에서 들어오는 포트를 열어주는 개념이다. 명령어는 firewall-config이다.

서비스 설정

서비스란 컴퓨터가 부팅될 때 자동으로 실행되는 프로그램을 일컫는데, 그것들이 자동으로 켜지게 할 지 말 지를 설정하는 명령어이다. 처음에는 설치가 안되어 있으므로 dnf로 설치하자.

cron

주기적으로 반복되는 일을 자동적으로 실행될 수 있도록 설정한다. 관련된 데몬(서비스)은 crond, 관련 파일은 /etc/crontab.

<분><시><일><월><요일> root run-parts /etc/cron.<시행 주기>: 반복하고 싶은 시간마다 시행할 수 있다. ex. 02 4 * * * root run-parts /etc/cron.daily는 매일 4시 02분에 실행하겠다는 이야기이다.

at

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

  • 예약 : # at <시간> ex. # 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 <작업번호>

cron과 at 실습

systemctl status crond를 통해 크론 서비스가 작동하고 있는지 확인한다. active (running)가 보인다면 제대로 작동하고 있는 것이고, 만약 작동을 하고 있지 않다면 systemctl start로 작동을 시켜주면 된다.

이제 crontab 파일을 설정해야 한다. vi /etc/crontab으로 크론탭에 명령을 입력해보자. 주석 아래에 명령을 입력해주면 된다.

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

01 3 15 * * root run-parts /etc/cron.monthly

그러면 이제 반복 실행을 지정한 폴더로 가서 반복할 내용에 대한 스크립트를 만들어줘야 한다. 월과 일을 이름으로 하는 백업 파일을 자동으로 생성해주는 스크립트이다. 아직까지 스크립트에 대해서는 자세히 사용법을 몰라도 된다.

#!/bin/sh

set $(date)
fname="backup-$2$3tar.x2"

tar cfJ /backup/$fname /home

아직 해당 파일은 실행권한이 없으니 chmod 755 myBackup.sh을 통해 실행권한을 부여하면 주기적으로 실행이 될 수 있다. 확인을 해보고 싶다면 date 011503002027로 시간을 강제로 조정해서 파일이 만들어지는 지 확인하면 된다. 2027년 1월 15일 3시 0분으로 변경하였다. 만약 다시 표준 시간대로 돌리고 싶다면 rdate -s time.bora.net를 입력한다.

at 명령어를 실습해보자. 우선 at 4:00am tomorrow로 실행할 날짜를 설정하고, 실행할 명령어를 쭉 입력해주면 된다. 입력이 다 끝났다면 Ctrl+d를 입력하면 된다.

[root@localhost ~]# at 4:00am tomorrow
warning: commands will be executed using /bin/sh
at> dnf -y update
at> reboot
at> <EOT>
job 1 at Wed Sep 15 04:00:00 2021

만약 예약한 목록을 보고 싶다면 at -l로 볼 수 있다. 또한 예약을 삭제하려면 atrm <예약 번호>로 삭제를 하면 된다.

Leave a comment