Red Hat Enterprise Linux 에서 작업 예약하기

Red Hat Enterprise LinuxBeginner
지금 연습하기

소개

이 랩에서는 다양한 도구를 사용하여 RHEL 시스템에서 작업을 스케줄링하는 실질적인 경험을 얻게 됩니다. at 명령어를 사용하여 일회성 작업을 예약하고, crontab을 사용하여 사용자별 반복 작업을 관리하며, cron 디렉토리를 사용하여 시스템 전체의 반복 작업을 구성하는 방법을 배우게 됩니다.

또한, 이 랩에서는 보다 강력하고 유연한 작업 자동화를 위해 systemd 타이머를 사용한 고급 스케줄링 기술을 다루고, systemd-tmpfiles를 사용하여 임시 파일을 효율적으로 관리하는 방법을 보여줍니다. 이 랩을 마치면, 다양한 시나리오에 적합한 스케줄링 방법을 선택하고 RHEL 환경에서 자동화된 작업을 효과적으로 관리하는 데 능숙해질 것입니다.

이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 85%입니다.학습자들로부터 92%의 긍정적인 리뷰율을 받았습니다.

'at'으로 일회성 작업 예약하기

이 단계에서는 at 명령어를 사용하여 미래의 특정 시간에 한 번 실행되도록 작업을 예약하는 방법을 배웁니다. at 명령어는 반복적으로 실행할 필요가 없는 명령어를 실행하는 데 유용합니다. 간단한 작업을 예약하고, 해당 작업의 세부 정보를 확인한 다음, 제거하는 과정을 진행하겠습니다.

이 실습에서는 작업 예약을 배우기 위해 로컬 시스템에서 직접 작업합니다. 모든 명령어는 현재 터미널 환경에서 실행됩니다.

이제 현재 시간과 날짜를 홈 디렉터리의 ~/myjob.txt라는 파일에 출력하는 작업을 예약해 보겠습니다. 지금으로부터 3 분 후에 실행되도록 예약하겠습니다.

at now + 3 minutes << EOF
date > ~/myjob.txt
EOF

warning: commands will be executed using /bin/sh 메시지는 정상적인 메시지입니다. job N at ... 출력은 작업 번호와 예약된 실행 시간을 나타냅니다. 나중에 필요하므로 작업 번호를 기록해 두십시오.

다음으로, 대화형으로 다른 작업을 예약해 보겠습니다. 이 방법은 여러 명령어 또는 더 복잡한 스크립트를 입력할 때 유용합니다. 지금으로부터 5 분 후에 ~/at_output.txt 파일에 "Hello from at job!"을 추가하는 작업을 예약하겠습니다.

at now + 5 minutes

명령어를 입력하고 Enter 키를 누르면 at> 프롬프트가 표시됩니다. 명령어를 입력한 다음 Ctrl+d를 눌러 완료합니다.

at > echo "Hello from at job!" >> ~/at_output.txt
at > Ctrl+d

현재 at 큐에 있는 작업을 보려면 atq 명령어를 사용합니다. 이 명령어는 현재 사용자의 모든 대기 중인 at 작업을 나열합니다.

atq

출력에는 작업 번호, 예약된 시간, 큐, 그리고 작업을 예약한 사용자가 표시됩니다.

예약된 작업을 보여주는 atq 명령어 출력

특정 at 작업이 실행할 명령어를 검사하려면 at -c 명령어 뒤에 작업 번호를 붙여 사용합니다. N을 이전에 기록해 둔 작업 번호 중 하나로 바꾸십시오.

at -c N

이 명령어는 at이 해당 작업에 대해 실행할 쉘 스크립트를 표시합니다. 출력에서 date > ~/myjob.txt 또는 echo "Hello from at job!" >> ~/at_output.txt 명령어를 볼 수 있어야 합니다.

마지막으로, 예약된 at 작업을 제거하려면 atrm 명령어 뒤에 작업 번호를 붙여 사용합니다. 처음에 예약했던 작업을 제거해 보겠습니다. N을 첫 번째 작업의 작업 번호로 바꾸십시오.

atrm N

작업을 제거한 후 atq를 다시 사용하여 큐에서 더 이상 보이지 않는지 확인할 수 있습니다.

atq

이제 두 번째 작업만 보이거나 (아직 실행되지 않았다면) 두 작업 모두 제거되었거나 실행되었다면 빈 큐가 보여야 합니다.

이것으로 at 명령어를 사용하여 일회성 작업을 예약하는 첫 번째 단계를 마칩니다.

'at' 작업 관리

이 단계에서는 다른 큐 (queue) 를 사용하여 작업을 예약하고 실행을 확인하는 등 at 작업을 더 깊이 관리하는 방법을 알아봅니다. at 큐를 이해하면 작업 우선순위를 지정하거나 다른 유형의 일회성 작업을 분리하는 데 유용할 수 있습니다.

더 고급 at 작업 관리 기능을 탐색하기 위해 로컬 시스템에서 계속 작업할 것입니다.

at 명령은 -q 옵션을 사용하여 큐를 지정할 수 있습니다. 큐는 a부터 z까지의 단일 문자입니다. 큐 a는 기본값이며, 큐 a부터 z까지의 작업은 niceness(우선순위) 가 감소함에 따라 실행됩니다. 큐 a가 가장 높은 우선순위를 가지며, 큐 z가 가장 낮은 우선순위를 가집니다. 큐 b는 배치 작업 (batch jobs) 을 위해 예약되어 있습니다.

2 분 후에 실행될 큐 g(낮은 우선순위 큐) 에 작업을 예약해 보겠습니다. 이 작업은 타임스탬프와 함께 ~/queue_g_job.txt라는 파일을 생성합니다.

at -q g now + 2 minutes << EOF
date > ~/queue_g_job.txt
EOF

job N at ...와 유사한 출력을 보게 될 것입니다. 이 작업 번호를 기록해 두십시오.

다음으로, 일반적으로 시스템 부하가 낮을 때 실행될 수 있는 작업에 사용되는 큐 b(배치 큐) 에 작업을 예약해 보겠습니다. 이 작업은 ~/batch_job.txt에 "Batch job executed!"를 추가합니다. 지금부터 4 분 후에 실행되도록 예약하겠습니다.

at -q b now + 4 minutes << EOF
echo "Batch job executed!" >> ~/batch_job.txt
EOF

다시 한번 작업 번호를 기록해 두십시오.

보류 중인 모든 작업 (다른 큐에 있는 작업 포함) 을 보려면 atq를 사용합니다.

atq

이제 각각의 큐 문자 (gb) 와 함께 두 작업이 모두 나열된 것을 볼 수 있습니다.

예약된 작업을 보여주는 atq 명령 출력

이제 예약된 작업이 실행될 때까지 기다립니다. 모든 작업이 완료될 수 있도록 최소 5 분 동안 기다립니다. at 작업에서 생성된 파일이 존재하고 예상한 내용을 포함하는지 확인할 수 있습니다.

~/queue_g_job.txt를 확인합니다.

cat ~/queue_g_job.txt

날짜 및 시간 문자열이 표시되어야 합니다.

~/batch_job.txt를 확인합니다.

cat ~/batch_job.txt

"Batch job executed!"가 표시되어야 합니다.

파일이 없거나 비어 있다면 작업이 아직 실행되지 않았거나 명령에 문제가 있었을 수 있습니다. atq를 다시 확인하여 아직 보류 중인지 확인할 수 있습니다.

이것으로 고급 at 작업 관리 단계를 완료했습니다. 나머지 at 작업은 컨테이너가 파괴될 때 자동으로 정리됩니다.

'crontab'으로 반복적인 사용자 작업 예약

이 단계에서는 특정 사용자에 대한 반복 작업을 예약하는 방법을 crontab을 사용하여 배웁니다. 한 번 실행되는 at 작업과 달리 cron 작업은 지정된 간격으로 반복 실행됩니다. 이는 일상적인 유지보수, 데이터 백업 또는 보고서 생성에 이상적입니다.

사용자 crontab 관리에 대해 계속해서 로컬 시스템에서 작업하겠습니다.

crontab 명령을 사용하면 사용자는 자신의 cron 작업을 생성, 편집 및 볼 수 있습니다. 각 사용자마다 고유한 crontab 파일이 있습니다.

crontab 파일을 편집하려면 crontab -e 명령을 사용합니다. 이 명령은 기본 텍스트 편집기 (일반적으로 vim) 에서 crontab 파일을 엽니다.

crontab -e

Vim 편집기 지침:

  • i를 눌러 삽입 모드로 들어갑니다 (하단에 -- INSERT --가 표시됩니다).
  • 화살표 키를 사용하여 이동합니다.
  • 저장하고 종료하려면: Esc를 눌러 삽입 모드를 종료한 다음 :wq를 입력하고 Enter를 누릅니다.
  • 저장하지 않고 종료하려면: Esc를 누른 다음 :q!를 입력하고 Enter를 누릅니다.

편집기 내에서 cron 작업을 정의하기 위해 새 줄을 추가합니다. cron 항목은 다섯 개의 시간 및 날짜 필드와 실행할 명령으로 구성됩니다. 필드는 다음과 같습니다.

  • 분 (0-59)
  • 시간 (0-23)
  • 월 일 (1-31)
  • 월 (1-12)
  • 요일 (0-7, 여기서 0 또는 7 은 일요일)

*를 와일드카드로 사용하여 필드에 대해 "매번"을 의미하거나 /를 사용하여 단계 값 (예: 5 분마다 */5) 을 지정할 수 있습니다.

매분마다 ~/my_cron_log.txt라는 파일에 현재 날짜와 시간을 추가하는 작업을 예약해 보겠습니다. 이를 통해 cron 작업이 작동하는 것을 빠르게 관찰할 수 있습니다.

vim 에서 다음 단계를 따르세요.

  1. i를 눌러 삽입 모드로 들어갑니다.
  2. crontab 파일에 다음 줄을 추가합니다.
* * * * * /usr/bin/date >> ~/my_cron_log.txt
  1. Esc를 눌러 삽입 모드를 종료합니다.
  2. :wq를 입력하고 Enter를 눌러 저장하고 종료합니다.

새로운 crontab이 설치되었음을 나타내는 메시지가 표시됩니다.

crontab: installing new crontab

cron 작업이 성공적으로 추가되었는지 확인하려면 crontab -l 명령을 사용하여 crontab 항목을 나열할 수 있습니다.

crontab -l

방금 추가한 줄이 표시됩니다.

* * * * * /usr/bin/date >> ~/my_cron_log.txt

이제 cron 작업이 최소 한 번 실행되도록 1~2 분 정도 기다립니다. 다음 분 표시가 언제인지 확인하기 위해 현재 시간을 확인할 수 있습니다.

date

cron 작업이 몇 번 실행되도록 최소 2 분 정도 기다린 후 ~/my_cron_log.txt 파일의 내용을 확인합니다.

cat ~/my_cron_log.txt

날짜와 시간이 포함된 하나 이상의 줄이 표시되어 cron 작업이 실행되었음을 나타냅니다.

Mon Apr 8 10:30:01 AM EDT 2024
Mon Apr 8 10:31:01 AM EDT 2024
Cron job output in log file

이로써 사용자 crontab 관리 단계가 완료되었습니다. 컨테이너가 파괴될 때까지 cron 작업은 계속 실행됩니다.

사용자 'crontab' 항목 관리

이 단계에서는 기존 작업 편집, 여러 작업 추가 및 특수 cron 문자열 이해를 포함하여 사용자 crontab 항목을 관리하기 위한 더 발전된 기술을 배우게 됩니다. 효과적인 crontab 관리는 일상적인 작업을 자동화하는 데 매우 중요합니다.

고급 crontab 관리 기술을 탐색하기 위해 로컬 시스템에서 계속 작업합니다.

새로운 cron 작업을 추가하는 것으로 시작해 보겠습니다. 이 작업은 2 분마다 "Hello from cron!"을 ~/cron_messages.txt에 추가합니다.

편집을 위해 crontab을 엽니다.

crontab -e

vim 에서:

  1. i를 눌러 삽입 모드로 들어갑니다.
  2. 다음 줄을 crontab 파일에 추가합니다.
*/2 * * * * echo "Hello from cron!" >> ~/cron_messages.txt
  1. Esc를 눌러 삽입 모드를 종료합니다.
  2. :wq를 입력하고 Enter를 눌러 저장하고 종료합니다.

항목이 추가되었는지 확인합니다.

crontab -l

새로 추가된 줄이 표시됩니다.

이제 매일 오전 8 시에 실행되는 다른 cron 작업을 추가해 보겠습니다. 이 작업은 홈 디렉토리의 디스크 사용량을 ~/disk_usage.log에 기록합니다.

편집을 위해 crontab을 다시 엽니다.

crontab -e

vim 에서:

  1. i를 눌러 삽입 모드로 들어갑니다.
  2. 이전 줄 아래에 다음 줄을 추가합니다.
0 8 * * * du -sh ~ >> ~/disk_usage.log
  1. Esc를 눌러 삽입 모드를 종료합니다.
  2. :wq를 입력하고 Enter를 눌러 저장하고 종료합니다.

두 항목이 모두 있는지 확인합니다.

crontab -l

이제 두 개의 cron 작업이 모두 나열된 것을 볼 수 있습니다.

cron은 또한 일반적인 일정을 단순화할 수 있는 특수 문자열을 지원합니다. 여기에는 @reboot, @yearly, @annually, @monthly, @weekly, @daily, @midnight@hourly가 포함됩니다. 예를 들어, @hourly0 * * * *와 동일합니다.

시간별로 실행되고 시스템 가동 시간을 ~/uptime_log.txt에 기록하는 작업을 추가해 보겠습니다.

편집을 위해 crontab을 엽니다.

crontab -e

vim 에서:

  1. i를 눌러 삽입 모드로 들어갑니다.
  2. 다음 줄을 추가합니다.
@hourly uptime >> ~/uptime_log.txt
  1. Esc를 눌러 삽입 모드를 종료합니다.
  2. :wq를 입력하고 Enter를 눌러 저장하고 종료합니다.

세 항목을 모두 확인합니다.

crontab -l

이제 세 개의 cron 작업이 모두 표시됩니다.

이러한 작업의 효과를 보여주기 위해 잠시 기다리겠습니다. 작업이 서로 다른 간격으로 예약되어 있으므로 모든 작업이 즉시 실행되는 것을 볼 수는 없지만 설정을 확인할 수 있습니다.

*/2 작업이 한 번 이상 실행되도록 최소 3 분 이상 기다립니다.

~/cron_messages.txt 파일을 확인합니다.

cat ~/cron_messages.txt

"Hello from cron!" 메시지가 하나 이상 표시됩니다.

Hello from cron!

~/disk_usage.log~/uptime_log.txt 파일은 현재 시간에 따라 아직 생성되지 않았을 수 있습니다. 이는 각각 매일 및 매시간 실행되도록 예약되어 있기 때문입니다. 중요한 부분은 해당 항목이 crontab에 올바르게 구성되어 있다는 것입니다.

이것으로 사용자 crontab 관리 단계를 완료했습니다. 모든 cron 작업은 컨테이너가 파괴될 때까지 계속 실행됩니다.

cron 디렉토리를 사용하여 반복적인 시스템 작업 예약

이 단계에서는 cron 디렉토리를 사용하여 반복적인 시스템 전체 작업을 예약하는 방법을 배우게 됩니다. 사용자별 crontab 항목과 달리, 사용자에게 특정한 시스템 cron 작업은 root 사용자가 관리하며 전체 시스템에 영향을 미칩니다. 이러한 작업은 일반적으로 시스템 유지 관리, 로그 로테이션 및 기타 관리 작업에 사용됩니다.

시스템 전체 cron 작업 구성을 탐색하기 위해 로컬 시스템에서 계속 작업합니다.

시스템 전체 cron 작업은 /etc/crontab에서 정의되거나 특정 디렉토리에 스크립트를 배치하여 정의됩니다.

  • /etc/cron.hourly/: 이 디렉토리의 스크립트는 한 시간에 한 번 실행됩니다.
  • /etc/cron.daily/: 이 디렉토리의 스크립트는 하루에 한 번 실행됩니다.
  • /etc/cron.weekly/: 이 디렉토리의 스크립트는 일주일에 한 번 실행됩니다.
  • /etc/cron.monthly/: 이 디렉토리의 스크립트는 한 달에 한 번 실행됩니다.

이러한 디렉토리는 run-parts 유틸리티에 의해 처리되며, 이 유틸리티는 내부에 있는 모든 실행 파일을 실행합니다.

시스템 cron 작업을 관리하려면 root 권한이 필요합니다. labex 사용자는 sudo 액세스 권한이 있으므로 필요한 명령에 sudo를 사용할 수 있습니다.

시스템 로그에 메시지를 기록하는 간단한 스크립트를 만들어 보겠습니다. 이 스크립트를 /etc/cron.hourly/에 배치하여 매시간 실행되도록 합니다.

먼저, 스크립트 파일 /etc/cron.hourly/my_hourly_script를 만듭니다.

sudo nano /etc/cron.hourly/my_hourly_script

파일에 다음 내용을 추가합니다.

#!/bin/bash
logger "Hourly cron job executed at $(date)"

편집기를 저장하고 종료합니다 (nano에서 Ctrl+o, Enter, Ctrl+x).

다음으로, 스크립트를 실행 가능하게 만들어야 합니다. 실행 권한이 없으면 run-parts가 이를 무시합니다.

sudo chmod +x /etc/cron.hourly/my_hourly_script

이제 스크립트가 실행 가능한지 확인해 보겠습니다.

ls -l /etc/cron.hourly/my_hourly_script

권한에 x가 표시되어야 합니다 (예: -rwxr-xr-x).

cron.hourly 작업은 한 시간에 한 번 실행되므로, 이 랩에서는 실행을 확인하기 위해 한 시간을 기다릴 수 없습니다. 그러나 시간별 디렉토리에 대해 run-parts 명령을 수동으로 트리거하여 실행을 시뮬레이션할 수 있습니다.

sudo run-parts /etc/cron.hourly/

이 명령은 /etc/cron.hourly/에 있는 모든 실행 가능한 스크립트를 실행합니다. 우리가 만든 스크립트는 logger 명령을 사용하여 시스템 로그에 메시지를 씁니다. 이 컨테이너 환경에서는 로그 출력을 쉽게 확인할 수 없지만, 중요한 학습 목표는 cron 디렉토리에서 스크립트를 만들고 관리하는 방법을 이해하는 것입니다.

실제 RHEL 시스템에서는 journalctl 또는 /var/log/messages를 사용하여 시스템 로그를 확인하여 스크립트가 성공적으로 실행되었는지 확인할 수 있습니다.

이것으로 시스템 cron 작업 관리 단계를 완료했습니다. 스크립트는 제자리에 유지되며 실제 시스템 환경에서 매시간 실행됩니다.

반복 작업 설정을 위한 systemd 타이머 구성

이 단계에서는 Linux 시스템에서 작업을 예약하기 위한 cron의 현대적인 대안인 systemd 타이머에 대해 배우게 됩니다. systemd 타이머는 더 많은 유연성을 제공하며 systemd 생태계와 더 나은 통합을 제공합니다. systemctl 명령은 일반적으로 systemd 유닛을 관리하는 데 사용되지만, Docker 컨테이너 환경으로 인해 타이머 및 서비스 유닛 파일을 직접 생성하고 확인하는 데 집중할 것입니다.

systemd 타이머는 systemd 서비스 유닛과 함께 작동합니다. 타이머 유닛 (.timer 파일) 은 작업을 언제 실행해야 하는지 정의하고, 서비스 유닛 (.service 파일) 은 어떤 작업을 실행해야 하는지 정의합니다.

systemd 타이머 구성을 탐색하기 위해 로컬 시스템에서 계속 작업합니다.

시스템 디렉토리에 systemd 유닛 파일을 생성하려면 root 권한이 필요합니다. labex 사용자는 sudo 액세스 권한이 있으므로 필요한 명령에 sudo를 사용할 수 있습니다.

파일에 메시지를 기록하는 간단한 서비스를 만들어 보겠습니다. 이 서비스 유닛 파일은 사용자 지정 서비스 유닛이 일반적으로 저장되는 /etc/systemd/system/에 배치합니다.

서비스 유닛 파일 /etc/systemd/system/my-custom-task.service를 생성합니다.

sudo nano /etc/systemd/system/my-custom-task.service

파일에 다음 내용을 추가합니다.

[Unit]
Description=My Custom Scheduled Task

[Service]
Type=oneshot
ExecStart=/bin/bash -c 'echo "My custom task executed at $(date)" >> /var/log/my-custom-task.log'

편집기를 저장하고 종료합니다 (nano에서 Ctrl+o, Enter, Ctrl+x).

다음으로, 타이머 유닛 파일 /etc/systemd/system/my-custom-task.timer를 생성합니다. 이 타이머는 5 분마다 서비스를 활성화합니다.

sudo nano /etc/systemd/system/my-custom-task.timer

파일에 다음 내용을 추가합니다.

[Unit]
Description=Run My Custom Scheduled Task every 5 minutes

[Timer]
OnCalendar=*:0/5
Persistent=true

[Install]
WantedBy=timers.target

저장하고 편집기를 종료합니다.

OnCalendar 설명:

  • *:0/5는 "5 분마다"를 의미합니다.
    • *는 연도, 월, 일, 시 (모든 값) 를 의미합니다.
    • 0/5는 분을 의미하며, 0 분부터 시작하여 5 분마다 (0, 5, 10, ..., 55) 를 의미합니다.

일반적인 systemd 환경에서는 이제 systemctl daemon-reload를 실행하여 systemd가 새 유닛 파일을 인식하도록 한 다음, systemctl enable --now my-custom-task.timer를 실행하여 타이머를 시작합니다. 그러나 Docker 컨테이너 제한으로 인해 systemctl은 완전히 작동하지 않습니다.

대신, 파일 생성을 수동으로 확인합니다. 컨테이너 내부의 systemd 데몬이 결국 이러한 파일을 가져올 수 있지만, 이 랩 설정에서는 타이머 실행을 직접 제어하거나 관찰할 수 없습니다. 여기의 주요 목표는 이러한 파일을 구성하는 방법을 이해하는 것입니다.

생성된 파일의 존재를 확인해 보겠습니다.

ls -l /etc/systemd/system/my-custom-task.service
ls -l /etc/systemd/system/my-custom-task.timer

두 파일이 모두 존재함을 나타내는 출력이 표시되어야 합니다.

서비스 실행을 시뮬레이션하려면 ExecStart에 정의된 명령을 수동으로 실행할 수 있습니다.

sudo /bin/bash -c 'echo "My custom task executed at $(date)" >> /var/log/my-custom-task.log'

이제 로그 파일을 확인하여 출력을 확인합니다.

sudo cat /var/log/my-custom-task.log

방금 기록한 메시지가 표시되어야 합니다.

My custom task executed at Tue Jun 10 06:54:40 UTC 2025

이것으로 systemd 타이머 구성 단계를 완료했습니다. 서비스 및 타이머 유닛 파일은 참조용으로 유지됩니다.

systemd-tmpfiles 를 사용하여 임시 파일 관리

이 단계에서는 systemd-tmpfiles를 사용하여 임시 파일 및 디렉토리를 관리하는 방법을 배우게 됩니다. 이 유틸리티는 systemd의 일부이며, 휘발성 및 임시 파일과 디렉토리를 생성, 삭제 및 정리하는 역할을 합니다. /tmp, /var/tmp 및 기타 임시 저장 위치를 관리하여 오래된 파일이 주기적으로 제거되도록 하는 데 일반적으로 사용됩니다.

systemd-tmpfiles 구성을 탐색하기 위해 로컬 시스템에서 계속 작업합니다.

systemd-tmpfiles를 구성하려면 root 권한이 필요합니다. labex 사용자는 sudo 액세스 권한이 있으므로 필요한 명령에 sudo를 사용할 수 있습니다.

systemd-tmpfiles/etc/tmpfiles.d//usr/lib/tmpfiles.d/에서 구성 파일을 읽습니다. 이러한 파일은 파일 및 디렉토리를 생성, 삭제 및 관리하기 위한 규칙을 정의합니다.

새 임시 디렉토리를 관리하기 위해 사용자 지정 구성 파일을 만들어 보겠습니다. /run/my_temp_dir 디렉토리를 생성하고 systemd-tmpfiles를 구성하여 1 분 이상 된 파일을 제거하도록 합니다.

구성 파일 /etc/tmpfiles.d/my_temp_dir.conf를 생성합니다.

sudo nano /etc/tmpfiles.d/my_temp_dir.conf

파일에 다음 내용을 추가합니다.

d /run/my_temp_dir 0755 labex labex 1m

줄 설명:

  • d: 이 항목이 디렉토리를 정의함을 지정합니다.
  • /run/my_temp_dir: 디렉토리의 경로입니다.
  • 0755: 디렉토리의 권한입니다.
  • labex labex: 디렉토리의 소유자 및 그룹입니다.
  • 1m: 이 디렉토리의 파일이 삭제되어야 하는 기간 (1 분) 입니다.

편집기를 저장하고 종료합니다 (nano에서 Ctrl+o, Enter, Ctrl+x).

이제 systemd-tmpfiles에 이 구성을 적용하도록 지시합니다. --create 옵션은 디렉토리가 존재하지 않는 경우 디렉토리를 생성합니다.

sudo systemd-tmpfiles --create /etc/tmpfiles.d/my_temp_dir.conf

디렉토리가 올바른 권한 및 소유권으로 생성되었는지 확인합니다.

ls -ld /run/my_temp_dir

다음과 유사한 출력이 표시되어야 합니다.

drwxr-xr-x 2 labex labex 6 Jun 10 06:55 /run/my_temp_dir

다음으로, 이 새 임시 디렉토리 내에 테스트 파일을 만들어 보겠습니다.

sudo touch /run/my_temp_dir/test_file.txt

파일이 존재하는지 확인합니다.

ls -l /run/my_temp_dir/test_file.txt

이제 구성에 따라 파일이 "오래된" 상태가 되도록 1 분 이상 기다려야 합니다. 최소 70 초 (1 분 10 초) 동안 기다립니다.

1 분 이상 기다린 후, 구성에 따라 정리 프로세스를 트리거하기 위해 --clean 옵션으로 systemd-tmpfiles를 수동으로 실행합니다.

sudo systemd-tmpfiles --clean /etc/tmpfiles.d/my_temp_dir.conf

마지막으로, test_file.txt가 제거되었는지 확인합니다.

ls -l /run/my_temp_dir/test_file.txt

"No such file or directory" 오류가 발생해야 하며, 이는 systemd-tmpfiles가 오래된 파일을 성공적으로 정리했음을 나타냅니다.

이것으로 systemd-tmpfiles 구성 단계를 완료했습니다. 구성 파일 및 임시 디렉토리는 참조용으로 유지됩니다.

요약

이 랩에서는 at 명령을 사용하여 일회성 작업을 예약하고 관리하는 방법을 배웠습니다. 여기에는 대화형 및 비대화형으로 작업을 예약하고, atqat 큐를 보고, atrm으로 보류 중인 작업을 삭제하는 것이 포함됩니다. 또한 crontab을 사용하여 반복적인 사용자별 작업을 예약하는 데 능숙해졌으며, cron 작업을 편집, 나열 및 제거하는 방법과 실행 시간을 지정하기 위한 cron 구문을 이해하는 방법을 다루었습니다. 또한, 이 랩에서는 스크립트를 표준 cron 디렉토리 (/etc/cron.hourly, /etc/cron.daily 등) 에 배치하여 시스템 전체의 반복적인 작업을 예약하는 방법과 /etc/cron.d에서 사용자 지정 cron 작업을 생성하는 방법을 보여주었습니다.

마지막으로, systemd 타이머를 사용한 고급 작업 예약에 대해 살펴보았으며, 반복적인 작업을 위한 서비스 및 타이머 유닛을 생성하고 활성화하는 방법과 자동 정리를 위해 systemd-tmpfiles를 사용하여 임시 파일 및 디렉토리를 관리하는 방법을 배웠습니다. 이 포괄적인 랩은 간단한 일회성 명령에서 복잡한 반복 시스템 프로세스에 이르기까지 RHEL 시스템에서 다양한 작업 예약 요구 사항을 관리하는 실질적인 경험을 제공했습니다.