Linux

Linux - 7. 작업 관리

JI12 2020. 6. 24. 14:54

atdcrond는 리눅스 시스템 작업 스케쥴을 관리할 수 있는 데몬 (스케쥴링 관리)

작업 예약이나 주기적 작업을 사람이 생각하고 관리해서 진행하는것은 생각보다 어렵기 때문에 데몬을 사용한다.

atd 데몬

관리자가 지정한 시간에 작업이 실행될 수 있도록 작업 스케쥴을 처리하는 기능

at 스케줄을 사용하기 위해서 at 데몬이 작동하고 있어야 하므로 atd 데몬을 동작 시킴

예약해놓으면 한번만 실행되고 소멸된다

 

at 내용은 /var/spool 디렉토리에 파일로 저장

 

6버전

service atd restart 로 활성화

 

7버전

systemctl restart atd.service

systemctl status atd.service

 

명령어

at [시간CMD]

 

작업 시간

at 1300

at 10:00pm today

 

작업 확인

at -l

atq

 

작업 종료

atrm N (N : Job ID) ex > atrm 2

at -r N                 ex > at - r 3

 

at 명령어 사용자 제한

at 데몬을 사용할 수 있는 사용자를 제한할 수 있는 방법이 있다.

/etc/at.allow 파일과 /etc/at.deny 파일을 이용해 at를 사용할 수 있는 사용자를 지정한다.

 

at.deny 파일 존재, at.deny 파일 존재하는 사용자만 at 명령어 수행X

at.deny 파일 존재않는 모든 사용자는 at 명령어 수행O

at.allow 파일 존재, at.allow 파일 존재하는 사용자만 at명령어 수행O

at.allow 파일 존재, at.deny 파일 보이지 않는다.

crond 데몬

같은 작업을 주기적으로 실행될 수 있도록 작업 스케쥴을 처리하는 기능

예약을 해놓으면 주기적으로 반복되는 일을 자동으로 실행할 수 있게 하는 시스템 작업

주기적으로 실행할 내용을 디렉토리에 넣어 놓고 동작한다

 

cron으로 작업 스케쥴을 예약하기 위해 crond 데몬을 작동시켜야하는데 데몬을 재실행 해준다

그러므로, 작업 스케줄을 예약하기 전에 항상 crond 데몬이 작동될 수 있도록 다음과 같이 처리한다

 

6버전

service crond restart

 

7버전

systemctl restart crond.service

systemctl enable crond.service 

systemctl is-enabled crond.service

 

cron 내용은 /var/spool 디렉토리에 파일로 저장하여 관리

관련 파일은 /etc/crontab, 이 /etc 디렉토리 밑에 시,일,주,월,요일 단위 형태로 cron디렉토리가 존재한다

 

/etc/crontab 형식

주기적으로 실행할 내용을 디렉토리에 넣어 놓고 동작한다

[분] [시] [일] [월] [요일] [사용자] [CMD]

 

요일은 0 ~ 6이고 0은 일요일

 

e> 59 14 24 * * root cp -r /home/backup

home 디렉토리가 backup 디렉토리에 전부 복사된다


/etc/crontab 파일
주기적으로 실행할 내용을 디렉토리에 넣어 놓고 동작한다

/etc/crontab 파일이 시간별 일별,주별,월별로 호출하는 디렉토리를 보여준다

- /etc/cron.hourly
- /etc/cron.daily
- /etc/cron.weekly
- /etc/cron.monthly

그래서 일반적으로 crontab 파일에 다음과 같이 입력할수 있다 (vi 로 진행)

ex>
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
03 5 * * 1 root run-parts /etc/cron.weekly
04 6 1 * * root run-parts /etc/cron.monthly

 

[참고]
run-parts : 다음에 나오는 디렉토리 안의 모든 명령어를 실행한다


[참고]
정확한 시간을 설정하는 방법으로는 rdate로 타임 서버에서 시간을 가져온 후에 리눅스에서 설정하면 된다
우리나라에서 운영하는 타임 서버
time.bora.net