[Linux] Job Scheduling (At)
- Linux
- 2021. 3. 31.
이번 글에서는 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은 Atd 와 Crond 두가지 damons 을 통해 관리되어 집니다.
이때 Atd 와 Crond 에 관련된 모든 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 name 이 a00002019b46e4 일 경우 다음과 같이 입력하면
cat /var/spool/at/a00002019b46e4
결과 값으로 job 의 내용을 확인할 수 있습니다.
혹은 job number 를 알고 있다면 at 명령어로도 확인할 수 있습니다.
예를 들어 생성한 job number 가 2일 경우 다음과 같이 입력하면
at -c 2
동일한 결과값을 얻는 것을 확인할 수 있습니다.
2-4) display job list
생성된 모든 at job 의 목록을 확인할 수 도 있습니다.
다음과 같이 입력하면
at -l
간단히 모든 at job 과 job number 및 부가정보 들을 확인할 수 있습니다.
2-4) remove job
생성된 at job 을 삭제할 수 도 있습니다.
예를 들어 job number 가 2 인 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 |