Linux 정시 작업 스케줄링

5506 단어 운영 체제 - Linux

제1장 관례적인 업무가 무엇입니까


예를 들어 만약 당신이 가족의 생일 전날 이메일 한 통을 보내서 잊지 말라고 일깨워 주고 싶다면, 이메일을 보내는 일은 관례적인 일이다.예행적인 작업은 주기성과 고정성을 가지고 있으며, 이러한 작업은 linux 시스템이 제때에 시작하고 완성할 수 있다.

제2장 linux 작업 스케줄링 종류


업무 스케줄링은 두 가지 방식이 있다. 첫째, 하나는 관례적인 것이다. 바로 일정한 주기마다 해야 할 사항이다.2. 하나는 돌발적인 것이다. 이번에 다 하면 두 번은 없다.linux 시스템에서 이 두 가지 방식은 각각crontab와at 두 명령에 대응한다.

제3장 한 번만 수행하는 작업 스케줄링


at는 한 번만 실행하면 스케줄링을 끝내는 명령을 처리할 수 있지만, at를 실행하려면 이 서비스의 지원이 있어야 합니다.명령 서비스atd status를 사용하여 atd 서비스가 시작되었는지 확인할 수 있습니다.
[nigel@DevTJ-todo-1507091995 ~]$ service atd status
atd (pid  2047) is running...

시작하지 않으면 서비스atdstart를 사용하여 시작할 수 있습니다.

3.1at의 작동 원리


at의 작업 원리는 매우 간단합니다. 이것은 at 명령을 사용하여 실행할 작업을 생성하고, 이 작업을 텍스트 파일로 var/spool/at/디렉터리에 기록합니다. 이 작업은atd 서비스의 사용과 실행을 기다릴 수 있습니다.

3.2at의 안전 문제


at는 백그라운드에서 정해진 시간에 명령을 실행할 수 있기 때문에 종종 해커에게 바이러스 프로그램을 실행하는 데 사용된다.따라서at의 사용 권한은 상당히 신중해야 한다.우리는/etc/at를 이용할 수 있다.allow와/etc/at.deny 이 두 파일은at의 사용 제한을 진행합니다.아래의at 실행 프로세스에서 이 두 파일의 작용을 알 수 있다. 1./etc/at를 먼저 찾는다.allow 이 파일은 이 파일에 적힌 사용자만 사용할 수 있으며, 이 파일에 없는 사용자는 사용할 수 없습니다. (at.deny에 없더라도)2. 만약/etc/at.allow가 존재하지 않으면/etc/at를 찾습니다.deny 파일, 이 파일에 쓴 사용자는at를 사용할 수 없습니다. 이 파일에 있는 사용자는at를 사용할 수 없습니다.3. 두 파일이 존재하지 않으면 루트만at명령을 사용할 수 있습니다.
위의 설명을 통해 알 수 있듯이,at.allow의 관리는 비교적 엄격하지만at.deny의 관리는 비교적 느슨하다.내 linux 호스트에는at만 남아 있습니다.deny 파일.

3.3at 문법


at 구문은 다음과 같습니다.
at [-mldv] TIME
at -c  

매개변수:
-m: at , , email 
-l:list, atq, at 
-d:delete, atrm, 
-v: 
-c: —— 

TIME: 시간 형식, at의 작업 내용을 언제 실행할지 정의
    HH:MM    04:30
         HH:MM , , 。
    HH:MM YYYY-MM-DD    04:30 2018-10-01
         、 at 
    HH:MM + number [minutes|hours|days|weeks]
         。 now + 5 minutes

3.4at 사용 예


at를 사용하여 작업을 정의합니다. 2분 후 원격 터미널 pts/1에 "Hello World"인쇄:
root@VM-32-73-ubuntu:/dev# at now + 2 minutes
at> echo "Hello World" >/dev/pts/1
at> 
job 3 at Mon Oct  1 14:47:00 2018
root@VM-32-73-ubuntu:/dev# atq
3       Mon Oct  1 14:47:00 2018 a root
//2 minutes later
root@VM-32-73-ubuntu:/dev# Hello World

2분 후에 화면에 HelloWorld 문자열이 인쇄됩니다.위에서 보듯이 우리가at를 사용할 때, 사용자에게 작업 명령을 실행하도록 하는at셸 환경에 들어가고, 명령 입력이 끝난 후에 EOF (ctrl+d) 를 사용하여 이 환경을 종료합니다.at에서 작업을 설정할 때, 불필요한 오류를 피할 수 있도록 절대 경로를 사용하는 것이 가장 좋다.

제4장 주기적으로 집행되는 작업 스케줄링


crontab 이 명령이 설정한 작업은 계속 순환할 것입니다.순환 가능한 시간은 분, 시간, 매주, 매월 또는 매년 등이다.crontab는 명령 실행을 사용할 수 있는 것 외에/etc/crontab를 편집해서 지원할 수 있습니다.크론탭을 실행할 수 있는 서비스는crond라는 데몬입니다.우리는 또한 서비스crondstatus라는 명령을 사용하여 cond 서비스가 시작되었는지 확인할 수 있습니다.
[nigel@DevTJ-todo-1507091995 ~]$ service crond status
crond (pid  2025) is running...

4.1crontab의 작업 원리


at와 유사하게crontab 명령을 사용하여 새 작업 스케줄링을 하면 이 작업은/var/spool/cron/에 기록되고 계정으로 구분됩니다. 아래와 같습니다.
[root@ /var/mail]# ls /var/spool/cron/
user1  root  nigel

입력 문법 오류로 인해cron을 실행할 수 없기 때문에vim를 사용하여 이 파일을 편집하지 마십시오.또한,cron이 실행하는 모든 작업은/var/log/cron 이 로그 파일에 기록되기 때문에, 우리는 항상 이 파일을 보고 시스템의 다른 목마 침입 여부를 판단할 수 있습니다.

4.2crontab의 안전 문제


at와 같이crontab도/etc/cron을 통과합니다.allow 및/etc/cron.deny 이 두 파일은 명령에 대한 사용자의 사용을 제한합니다.읽기 순서와 우선순위는at와 같습니다.

4.3 crontab 문법


crontab의 구문은 다음과 같습니다.
crontab [-u username] [-l|-e|-r]

매개변수:
-u: root , username。 , 
-l: crontab 
-e: crontab 。 vi 。
-r: crontab 。 -e 。

4.4crontab 사용 예


crontab-e를 사용하여 작업 파일을 편집하고 다음 내용을 추가합니다.
41 * * * * echo "Hello World">/dev/pts/12

: wq 저장 종료 후 다음 41분이 되면 화면에'Hello World'가 출력됩니다.
[nigel@DevTJ-todo-1507091995 ~]$ crontab -e
crontab: installing new crontab
[nigel@DevTJ-todo-1507091995 ~]$ Hello World

4.5crontab 내용 해독


상례에 추가된 한 줄은 하나의 작업으로 모든 작업은 고정된 형식을 가지고 있으며 6개의 필드로 구성되어 있으며 이 6개의 필드는 다음과 같은 의미를 가진다.
대표적 의미

시간
날짜
월별
활용단어참조
명령
디지털 범위
0~59
0~23
1~31
1~12
0~7
작업 내용
보조 필드 설명:
특수 문자
대표적 의미
*
대표님은 언제든지 받아들일 거예요.
, (쉼표)
시간대를 구분하다.작업이 3:00 및 6:00일 경우: 0 3,6 * * command
- (빼기 기호)
일정 기간 동안 예를 들어 8~12시의 시간 20분마다 실행: 20 8-12 * * command
/n(사선)
n은 n단위마다 간격을 두는 숫자를 대표한다.예를 들어 5분마다 실행: */5 * * * * command

제5장 시스템 프로필/etc/crontab


crontab-e는 사용자를 대상으로 설계된 (/usr/bin/crontab 실행 가능한 파일) 이며, 시스템의 예행적인 스케줄링이라면/etc/crontab (순수한 텍스트 파일) 를 수정하여 실현할 수 있습니다.cron 이 서비스는 분당 한 번씩/etc/crontab와/var/spool/cron의 데이터 내용을 읽고 일일이 판단하여 조건에 도달하면 실행합니다.따라서 우리가 작업을 추가할 때 최소 시간 단위는 분이며, 파일을 직접 수정한 후에 저장하면 효력이 발생합니다.(어떤 distribution은 파일을 메모리에 읽는 것입니다. 이 경우 즉시 효력이 발생하려면crond 이 서비스를 다시 시작해야 합니다.)/etc/crontab의 내용은 다음과 같습니다.
SHELL=/bin/bash
  2 PATH=/sbin:/bin:/usr/sbin:/usr/bin
  3 MAILTO=root
  4 HOME=/
  5
  6 # For details see man 4 crontabs
  7
  8 # Example of job definition:
  9 # .---------------- minute (0 - 59)
 10 # |  .------------- hour (0 - 23)
 11 # |  |  .---------- day of month (1 - 31)
 12 # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
 13 # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
 14 # |  |  |  |  |
 15 # *  *  *  *  * user-name command to be executed

필드 설명 주석은 이미 매우 명확하게 말했다.주의해야 할 것은 이 방식에 사용자 이름 필드가 추가되어 이 작업에 속하는 사용자를 지정하는 데 사용됩니다.
이 글은 《새형의 linux 개인방 요리 제3판》에서 총결하였다.

좋은 웹페이지 즐겨찾기