분류 기타

더 나은 crontab을 위해 anacron 사용

컨텐츠 정보

  • 조회 314 (작성일 )

본문

반복적인 작업을 수동으로 수행하는 대신 Linux가 자동으로 수행하도록 하십시오.


2021 년에는 사람들이 그 어느 때보다 Linux를 좋아하는 이유가 더 많습니다. 이 시리즈에서는 Linux를 사용하는 21 가지 이유를 공유 할 것입니다. 자동화는 Linux를 사용하는 가장 좋은 이유 중 하나입니다.


Linux에서 제가 가장 좋아하는 점 중 하나는 저를 위해 일할 의지입니다. 시간을 낭비하거나 오류가 발생하기 쉬우거나 잊어 버릴 가능성이 있는 반복적인 작업을 수행하는 대신 Linux를 예약합니다.


자동화 준비 


"자동화"라는 용어는 매력적이면서도 위협적일 수 있습니다. 모듈 식으로 접근하는 것이 도움이 됩니다.


1. 어떤 일이 일어나기를 원하십니까? 


먼저, 어떤 결과를 내고 싶은지 파악하십시오. 이미지에 워터 마킹을 하고 있습니까? 복잡한 디렉토리에서 파일을 제거 하시겠습니까? 중요한 데이터를 백업하고 계십니까? 무엇을 목표로 해야 하는지 알 수 있도록 자신을 위한 작업을 명확하게 정의하십시오. 하루에 한 번보다 훨씬 적게 매일 수행하는 작업이 있다면 자동화 후보가 될 수 있습니다.


2. 필요한 응용 프로그램 알아보기 


큰 작업을 작은 구성 요소로 나누고 각 결과를 수동으로 반복 가능하고 예측 가능한 방식으로 생성하는 방법을 배웁니다. Linux에서 수행 할 수 있는 작업의 대부분은 스크립트로 작성할 수 있지만 현재 한계를 인식하는 것이 중요합니다. 이메일로 편리하게 보낼 수 있도록 여러 이미지의 크기를 자동으로 조정하는 방법을 배우는 것과 기계 학습을 사용하여 주간 뉴스 레터를 위한 정교한 아트 워크를 생성하는 방법에는 차이가 있습니다. 이 중 하나는 오후에 배울 수 있고 다른 하나는 몇 년이 걸릴 수 있습니다. 그러나 우리 모두는 어딘가에서 시작해야 하므로 작게 시작하고 항상 개선 할 수 있는 방법을 찾아야 합니다.


3. 자동화 


Linux에서 자동화 도구를 사용하여 정기적으로 수행하십시오. 이것이 이 기사에서 다루는 단계입니다!


무언가를 자동화하려면 작업을 자동화하는 스크립트가 필요합니다. 테스트 할 때는 단순하게 유지하는 것이 가장 좋습니다. 따라서 이 기사에서 자동화하는 작업은 / tmp 디렉토리에 hello라는 파일을 만드는 것입니다.


#!/bin/sh

touch /tmp/hello 


간단한 스크립트를 복사하여 텍스트 파일에 붙여 넣고 이름을 example으로 지정합니다.


Cron 


모든 Linux 설치와 함께 제공되는 기본 제공 자동화 솔루션은 cron 시스템입니다. Linux 사용자는 일반적으로 작업을 예약하는 데 사용하는 방법 (일반적으로 "cron 작업"이라고 함)으로 cron을 참조하는 경향이 있지만 cron의 기능을 제공하는 여러 응용 프로그램이 있습니다. 가장 다재다능한 것은 크로니입니다. 장점은 시스템 관리자를 위해 설계된 히스토리 크론 응용 프로그램과 같이 컴퓨터가 항상 켜져 있다고 가정하지 않는다는 것입니다.


Linux 배포에서 제공하는 cron 시스템을 확인하십시오. cronie가 아닌 경우 배포판의 소프트웨어 저장소에서 cronie를 설치할 수 있습니다. 배포판에 cronie 용 패키지가 없는 경우 대신 이전 anacron 패키지를 사용할 수 있습니다. anacron 명령은 cronie에 포함되어 있으므로, 획득 방법에 관계없이 계속하기 전에 시스템에서 anacron 명령을 사용할 수 있는지 확인해야 합니다. Anacron은 설정에 따라 관리 루트 권한이 필요할 수 있습니다.


which anacron
/usr/sbin/anacron 


Anacron의 역할은 자동화 작업이 정기적으로 실행되도록 하는 것입니다. 이를 위해 anacron은 작업이 마지막으로 실행 된 시간을 확인한 다음 작업을 실행하도록 얼마나 자주 지시했는지 확인합니다.


5 일에 한 번씩 스크립트를 실행하도록 anacron을 설정했다고 가정합니다. 컴퓨터를 켜거나 절전 모드에서 해제 할 때마다 anacron은 로그를 검사하여 작업을 실행해야 하는지 여부를 결정합니다. 작업이 5 일 이상 전에 실행 된 경우 anacron은 작업을 실행합니다.


Cron jobs 


많은 Linux 시스템에는 cron이 수행 할 몇 가지 유지 관리 작업이 번들로 제공됩니다. 내 작업을 시스템 작업과 별도로 유지하는 것을 좋아하므로 홈 디렉토리에 디렉토리를 만듭니다. 특히, ~/.local ( "글로벌"컴퓨터 시스템이 아닌 사용자 계정에 맞게 사용자 지정된다는 의미에서 "local")이라는 숨겨진 폴더가 있으므로 cron의 평소를 미러링 하기 위해 etc/cron.daily 하위 디렉토리를 만듭니다. 내 시스템에 집. 또한 작업이 마지막으로 실행 된 시간을 추적하려면 스풀 디렉토리를 만들어야 합니다.


mkdir -p ~/.local/etc/cron.daily ~/.var/spool/anacron 


정기적으로 실행하려는 스크립트를 ~ / .local / etc / cron.daily 디렉토리에 배치 할 수 있습니다. 이제 예제 스크립트를 디렉토리에 복사하고 chmod 명령을 사용하여 실행 가능으로 표시하십시오.


cp example ~/.local/etc/cron.daily
# chmod +x ~/.local/etc/cron.daily/example 


다음으로 ~/.local/etc /cron.daily 디렉토리에있는 모든 스크립트를 실행하도록 anacron을 설정합니다.


Anacron 


기본적으로 대부분의 크론 시스템은 로그 파일 회전 및 인증서 업데이트와 같은 중요한 하위 수준 작업에 자주 사용되기 때문에 시스템 관리자의 도메인으로 간주됩니다. 이 문서에서 설명하는 구성은 개인 자동화 작업을 설정하는 일반 사용자를 위해 설계되었습니다.


크론 작업을 실행하도록 anacron을 구성하려면 /.local/etc/anacrontab에 구성 파일을 생성하십시오.


SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
1  0  cron.mine    run-parts /home/tux/.local/etc/cron.daily/ 


이 파일은 anacron에게 ~/.local/etc/cron.daily에있는 모든 실행 가능한 스크립트 (실행 부분)를 매일 (즉, 매일) 0 분 지연으로 실행하도록 지시합니다. 때로는 몇 분의 지연이 사용되어 로그인 직후에 가능한 모든 작업이 컴퓨터에 실행되지 않습니다.하지만 이러한 설정은 테스트에 적합합니다.


cron.mine 값은 프로세스의 임의의 이름입니다. 나는 그것을 cron.mine이라고 부르지 만 당신은 그것을 cron.personal 또는 펭귄 또는 당신이 원하는 무엇이든 부를 수 있습니다.


anacrontab 파일의 구문을 확인하십시오.


$ anacron -T -t ~/.local/etc/anacrontab \
-S /home/tux/.var/spool/anacron 


침묵은 성공을 의미합니다.


.profile에 anacron 추가 


마지막으로 anacron이 로컬 구성으로 실행되는지 확인해야 합니다. anacron을 루트 사용자가 아닌 일반 사용자로 실행하고 있기 때문에 로컬 구성 (anacron에 수행 할 작업을 알려주는 anacrontab 파일)과 anacron이 이후 며칠을 추적하는 데 도움이 되는 스풀 디렉토리로 지정해야 합니다. 각 작업이 마지막으로 실행되었습니다.


anacron -fn -t /home/tux/.local/etc/anacrontab \
-S /home/tux/.var/spool/anacron 


-fn 옵션은 anacron에게 타임 스탬프를 무시하도록 지시합니다. 즉, 어떤 일이 있어도 cron 작업을 실행하도록 강제합니다. 이것은 테스트 목적으로 만 사용됩니다.


크론 작업 테스트 


이제 모든 것이 설정되었으므로 작업을 테스트 할 수 있습니다. 기술적으로는 재부팅 하지 않고도 테스트 할 수 있지만, 이것이 처리하도록 설계된 것이므로 재부팅 하는 것이 가장 합리적입니다. 중단 된 로그인 세션과 불규칙한 로그인 세션입니다. 잠시 시간을 내어 컴퓨터를 재부팅하고 로그인 한 다음 테스트 파일을 찾으십시오.


ls /tmp/hello
/tmp/hello 


파일이 존재한다고 가정하면 예제 스크립트가 성공적으로 실행되었습니다. 이제 ~ / .profile에서 테스트 옵션을 제거하여 최종 구성으로 남겨 둘 수 있습니다.


anacron -t /home/tux/.local/etc/anacrontab \
-S /home/tux/.var/spool/anacron 


아나크론 사용 


개인 자동화 인프라를 구성 했으므로 컴퓨터에서 관리 할 스크립트를 ~/.local/etc /cron.daily 디렉터리에 배치하면 예약 된대로 실행됩니다.


작업 실행 빈도는 사용자에게 달려 있습니다. 예제 스크립트는 하루에 한 번 실행됩니다. 분명히 그것은 컴퓨터의 전원이 켜져 있고 주어진 날짜에 깨어 있는지에 달려 있습니다. 금요일에 컴퓨터를 사용하지만 주말에는 따로 두면 스크립트가 토요일과 일요일에 실행되지 않습니다. 하지만 월요일에는 anacron이 적어도 하루가 지났다는 것을 알기 때문에 스크립트가 실행됩니다. 매주, 격주 또는 매월 디렉토리를 ~ / .local / etc에 추가하여 다양한 간격을 예약 할 수 있습니다.


새 간격을 추가하려면 :

  1. ~/.local/etc (예 : cron.weekly)에 디렉토리를 추가합니다.
  2. ~/.local/etc/anacrontab에 줄을 추가하여 새 디렉토리에서 스크립트를 실행합니다. 주간 간격의 경우 구성은 다음과 같습니다.
    7 0 cron.mine run-parts /home/tux/.local/etc/cron.weekly/
    (0 값은 선택적으로 스크립트 시작을 정중하게 지연 시키는 몇 분의 수입니다).
  3. cron.weekly 디렉토리에 스크립트를 배치하십시오.


자동화 된 라이프 스타일에 오신 것을 환영합니다. 그렇게 느껴지지는 않지만 훨씬 더 생산적이 될 것입니다.


https://opensource.com/article/21/2/linux-automation