[Linux] Job Scheduling (At)

반응형

이번 글에서는 Linux 에서 At 명령어를 사용해 Job 을 Scheduling 하는 방법에 대해 알아보겠습니다.

명령어 요약

# see atd activity log
cat /var/log/cron

# see all job 
ls /var/spool/at

# create job 
at -f [Target File] now + 3 hours

# see job contents 
at -c [Job Number]

# see all job list with job number 
at -l

# remove job
at -d [Job Number] 

1. Job Scheduling

job scheduling 은 사용자가 특정 comamnd 혹은 program 을 미래의 특정 시점에 수행할 수 있도록 해주는 기능입니다.

scheduling 된 job 은 딱 한번만 실행될 수도 있고.. 혹은 주기적으로 정해진 시간에 수행될 수 도 있습니다.

한 번만 실행되도록 scheduling 된 job 의 경우 대개 시스템 사용량이 적은 시간대에 수행되어야 하는 작업이 주를 이룹니다.

반대로 주기적으로 실행되도록 scheduling 된 job 의 경우 대개 backup 파일을 생성한다던지, 혹은 오래된 log 파일을 지운다던지 등의 작업이 주를 이룹니다.

이러한 scheduling은 AtdCrond 두가지 damons 을 통해 관리되어 집니다.

이때 AtdCrond 에 관련된 모든 activity log 들은 /var/log/cron 파일에 기록되어 집니다.

cat /var/log/cron

위 파일에는 time activity, hostname, owner, PID, message 정보 등이 기록되어져 있습니다.

2. Atd

atd 는 미래 특정 시점에 딱 '한 번만' 수행되도록 scheduling 된 작업들을 관리합니다.

만약 atd 가 놓친 작업이 있을 경우.. 이는 다음날 동일한 시간에 다시 재수행됩니다.

2-1) at command

at 명령어는 Atd 가 관리할 one-time scheduled job 을 생성하는데 사용되는 명령어 입니다.

at 명령어로 생성한 scheduled job 은 /var/spool/at directory 에 생성되며 atd daemon 에 의해 정해진 시간에 작업이 수행됩니다.

ls /var/spool/at 

at 명령어로 특정 시간을 명시하는 방법은 다음과 같습니다.

2-2) create job

예를 들어 test.sh 라는 실행가능한 파일이 있을 때

"3시간 뒤 test.sh 파일을 실행한다." 라는 job schedule 을 생성하고 싶을 경우 다음과 같이 입력합니다.

at -f ./test.sh now + 3 hours

정상적으로 job 이 생성되었다면 다음과 같이 job number 와 함께 해당 job 의 수행 예정 시간이 출력됩니다.

제가 생성한 job 의 job number 는 '2' 입니디.

위와 같이 job 을 생성 후 /var/spool/at 을 확인해보면

ls -al /var/spool/at

다음과 같이 job 이 생성된 것을 확인할 수 있습니다.

다음과 같이 두 단계로 at 명령어를 사용할 수 도 있습니다.

at 11:30pm 6/30/2021

at > find / -name core

이전과 달리 첫번째 줄에 at 명령어와 함께 해당 작업이 수행될 시간을 입력한 뒤

다음줄에는.. 해당 시간에 수행될 명령어를 직접 입력할 수 있습니다.

명령어 입력을 완료한 뒤에는 'CRTL + D' 를 입력해 at 명령어의 입력을 종료합니다.

2-3) view job content

at 명령어로 생성된 job 의 내용(content) 을 확인하는 방법에는 여러가지가 있습니다.

먼저 /var/spool/at/ directory 에 생성된 job 을 cat 명령어로 직접 확인할 수 있습니다.

예를 들어 생성한 job namea00002019b46e4 일 경우 다음과 같이 입력하면

cat /var/spool/at/a00002019b46e4

결과 값으로 job 의 내용을 확인할 수 있습니다.

혹은 job number 를 알고 있다면 at 명령어로도 확인할 수 있습니다.

예를 들어 생성한 job number2일 경우 다음과 같이 입력하면

at -c 2 

동일한 결과값을 얻는 것을 확인할 수 있습니다.

2-4) display job list

생성된 모든 at job 의 목록을 확인할 수 도 있습니다.

다음과 같이 입력하면

at -l

간단히 모든 at job 과 job number 및 부가정보 들을 확인할 수 있습니다.

2-4) remove job

생성된 at job 을 삭제할 수 도 있습니다.

예를 들어 job number2 인 job 을 삭제하고 싶은 경우 다음과 같이 입력합니다.

at -d 2

삭제 후에는 더이상 at job 목록에 나오지 않는 것을 확인할 수 있습니다.

Schedule 정보가 추가되거나 변경되었다면 daemon 을 재시작해야 해당 내용이 반영됩니다.


반응형

'Linux' 카테고리의 다른 글

[Linux] Job Scheduling (Crontab)  (0) 2021.04.03
[Linux] Signal  (0) 2021.03.30
[Linux] Nice & Renice  (0) 2021.03.29
[Linux] Process States  (0) 2021.03.28
[Linux] Ping  (0) 2021.03.27

댓글

Designed by JB FACTORY