본문 바로가기
Linux

14. Linux Process Scheduling

by Choraengyi 2017. 1. 4.
728x90

 Linux 프로세스 스케쥴링에 대해 알아보겠습니다.


프로세스 스케줄링은 관리자가 정한 시간에 정한 작업을 하도록 정할 수 있는 것입니다. 예를 들어 매일 새벽 1시에 서버에 대한 백업을 진행하고자 할때 이를 설정하여 매일 새벽 1시마다 백업이 자동으로 수행되 도록 하는 것입니다. 리눅스에서는 at와 cron 이 있는데 at같은 경우 주로 한번 실행하게 될때, cron은 주기적으로 실행할때 사용됩니다.


 1. at

지정한 시간에 원하는 작업을 실행할 수 있도록 해줍니다. atd 데몬에 의해 실행되며 지정한 작업을 지정한 시간에 수행할 수 있도록 합니다. 여기서 지정한 작업은 큐에 저장되고 이 저장된 작업은 /var/spool/at 디렉터리에 저장됩니다. 명령어를 입력후에 원하는 작업을 입력하고, Ctrl+d 를 입력하면 수행됩니다.


사용법

at [option] 시간


시간 입력의 경우, HHMM 또는 HH:MM 의 형식이 가능하고 am, pm 표기가 없으면 24시표현으로 하게 됩니다. 날짜의 경우에도 YYYY-MM-DD 이고 문자열로도 시간을 나타내는( today, tomorrow, teatime, now 등) 방법도 있습니다. now에 +30minute, +5hour 등으로 사용해 현재시간에서 더해서 사용도 가능합니다.


옵션

의 미

-c

  뒤에 특정 작업을 적어, 해당 작업정보를 출력합니다.

-d

 등록된 작업을 삭제 합니다.(atrm과 같음) 

-f

 지정한 파일로부터 작업을 읽어옵니다. 

-l

 큐에 있는 작업을 출력합니다.(atq와 같음) 

-m

 실행 결과를 메일로 보냅니다. 

-q

 작업의 대기 큐를 지정합니다. a~z, A~Z 까지 사용할 수 있고, 미지정시 a를 사용합니다. 


지금으로부터 1분뒤에 실행하는 at를 만들고 엔터후에 명령어를 입력하고 Ctrl+d 를 입력하여 완료합니다.



1분 뒤 조회 결과 입니다.



2. atq

큐에 저장된 작업을 보여줍니다. (=at -l). 출력순서(작업번호, 실행시간, 작업 큐, 사용자)


사용법

atp


3. atrm

예약된 작업을 취소합니다.(=at -d)


사용법

atrm 작업번호


atq, atrm 몰아서 해보겠습니다.



지금으로부터 30분뒤에 test2.txt를 생성하는 프로세스스케줄을 만들고나서 atq로 큐를 조회하였습니다. 


작업번호, 실행시간, 큐, 사용자 순으로 출력이 되었습니다.


그리고 나서 atrm 2 로 해당 작업번호의 예약작업을 제거 하였습니다.


**/etc/at.allow 파일과 /etc/at.deny 파일로 at의 사용자를 허가 하거나 거부할 수 있습니다. 참고하시면 될거 같습니다.


4. cron

특정 작업을 특정시간에 실행합니다. /etc/crontab 에 등록하여 시스템 운영에 관한 작업을 수행할 수 있고, crontab 명령어를 사용하여 등록할 수 있습니다.

crontab을 이용하여 등록하게 되는데 이 crontab은 7개 필드가 있습니다.


5. crontab


필드

의 미

minute

 시간의 분입니다. 0~59 

hour 

 시간의 시입니다. 0~23 

day of month 

 날짜의 일입니다. 1~31 

month 

 날짜의 달입니다. 1~12 

day of week 

 날짜의 요일 입니다. 0~7 (0과 7은 일요일, 1부터 월, 2는 화 순으로 나감) 

user-name

 사용자이름 입니다. 보통 생략합니다. 

command 

 실행할 명령어 입니다. 


*각 필드에 해당 값말고도 문자 값을 쓸 수 있는데 "*"의 경우 와일드 카드(모든) 경우 이고, "-" 연결된 설정값, "," 연결되지 않은 값, "/" 연결된 설정 값내에서 특정 주기를 나눌때 사용합니다.


사용법

crontab [option] 파일


옵션

의 미

-e

 내용을 작성하거나 수정합니다.

-l

 설정된 내용을 출력합니다. 

-r

 설정된 내용을 삭제합니다. 

-u

 특정 사용자의 crontab을 다룹니다.(root) 


먼저 crontab -e로 하나 만들어 보겠습니다.



나노를 통해서 여는 것으로 해보았습니다.



 22시에 month와 day 상관없이 화, 목, 토에 해당 명령어를 실행하는 스케줄을 만들어 보았습니다.


조회해 보겠습니다.



삭제해 보겠습니다.


**at와 마찬가지로 /etc/cron.allow 와 /etc/cron.deny 파일로 사용자 제한이 가능합니다.


간단하게 프로세스 스케줄 관련 명령어와 기능에 대해 알아보았습니다. 이러한 기능을 사용하여 보안성도 높이고 관리도 유용하게 할 수 있고 여러 장점으로 활용이 가능한 기능입니다.


728x90
반응형

댓글