KST 시스템 시간 변경

date 명령을 통해 현재 날짜와 시간을 확인해보면 동부 표준시인 EST 로 설정되어있는 것을 확인할 수 있다. 따라서, 아래와 같이 한국 표준시 KST 로 변경해주는 작업이 필요하다.
 

ls -al /etc/localtime -> 현재 설정된 표준시 확인
ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime -> 한국 표준시 설정
date -> 한국 표준시 변경 확인

 
 

at 명령어

지정한 시간에 원하는 명령을 수행하도록 예약하는 도구이다. 명령 실행 시, 전용 프롬프트가 나타나며 실행할 명령어나 스크립트를 입력할 수 있다. 입력이 완료되면, ctrl + d 로 at 작업을 종료한다.
 

예약된 작업은 /var/spool/at 디렉토리에 개별 파일로 저장되며, 실행 결과는 /usr/bin/sendmail 을 통해 메일로 전송된다. 또한, /etc/at.allow 와 /etc/at.deny 환경 설정 파일을 통해 at 명령어에 대한 접근 통제가 가능하다.
 

오후 5:50 에, HELLO? 라는 문구를 출력하는 /backup/at_test1 파일을 생성하는 작업을 예약했다.
 

빈 디렉토리였던 /backup 에 오후 5:50 이후로, at_test1 이라는 이름의 파일이 생성된 것을 확인할 수 있다.
 

예약된 작업 번호 3번을 atrm 명령을 통해 삭제하였다.
 

마찬가지로, 예약된 작업 번호 4번을 at -d 명령을 통해 삭제하였다.
 
at 명령어는 기본적을 root 계정만 사용하도록 되어있으므로 /etc/at.allow 와 /etc/at.deny 파일을 통해 일반 사용자도 사용할 수 있도록 접근 제어를 할 수 있다.
 
- /etc/at.allow : at 명령어의 사용을 허가하는 사용자 목록
- /etc/at.deny : at 명령어의 사용을 제한하는 사용자 목록
- /etc/at.allow 파일이 /etc/at.deny 파일보다 우선시된다.
 
만약, /etc/at.deny 파일이 빈 파일이라면?
리눅스 초기 설치 시에는 /etc/at.allow 파일이 없는 경우가 있다. 해당 경우, /etc/at.deny 파일에 명시되어있는 사용자만 at 명령어의 사용이 제한된다. /etc/at.deny 파일이 비어있다면, 모든 사용자가 at 명령어를 사용할 수 있다.
 
 

batch 명령어

시스템 부하율과 연관하여 at 명령을 수행한다.
 

 
 

cron 설정

지정한 시간에 명령어, 프로그램, 작업 등을 실행할 수 있는 서비스이다. at 명령어는 1회성으로 예약할 수 있지만, cron 명령어는 반복적인 주기로 실행 가능하다. 
 

- /etc/crontab : 시스템 전역 사용
- /etc/cron.d : 작업 예약 스크립트 저장소
- /var/spool/cron : 개발 사용자 전용
- run-parts : /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly, /etc/cron.monthly 디렉토리 내의 스크립트 수행
 
1) /etc/crontab
7개의 필드로 구성되어있는 파일로, 크론 작업을 정의할 수 있다. 계정을 지정하여, 전역적으로 설정할 수 있다.
 

요일 = 일 0 or 7, 월 1, 화 2, 수 3, 목 4, 금 5, 토 6
*  = all (모두)
,   = 복수선택 (1, 5)
-  = 범위 (1 - 5)
/  = 간격 (*/1)
 

test.sh 파일의 내용을 다음과 같이 작성해보자. 명령 수행 결과들이 /root/log 파일에 저장될 것이다.
 

해당 파일을 실행하게 되면, 실행 권한이 없기에 허가 거부되는 것을 확인할 수 있다. 실행 권한을 부여한 후, 해당 파일을 실행하게 되면 다음과 같은 내용이 출력되게 된다. 이제, 이 파일을 cron 을 통해 주기적으로 실행되도록 하자.
 

/etc/crontab 파일의 하단에 다음과 같은 문구를 추가하여, 1분 간격으로 해당 파일이 수행되도록 하였다. 
 

service crond restart

 
그 후, cron 데몬을 재시작하면 앞서 설정한 작업이 수행되어 log 파일이 생성된 것을 확인할 수 있다.
 

tail -f 명령을 통해, log 파일의 내용을 모니터링하게 되면 1분 간격으로 내용이 추가되는 것을 확인할 수 있다.
 
2) crontab 명령어
/etc/crontab 파일과 달리, 계정을 지정하지 않고 로그인한 계정으로만 수행하는 지역 설정 명령이다.
 

주기적으로 실행될 user.txt 파일을 생성한다. 단, 계정별로 작업을 예약할 예정이므로 $USER 환경 변수를 사용한다.
 

다른 사용자의 파일 실행 및 수정이 가능하도록 허가권을 다음과 같이 변경한다.
 

root 계정에서 1분마다 user.sh 파일을 실행하는 작업을 예약하였다.
 

마찬가지로, 일반 사용자 계정에서도 1분마다 같은 동작을 수행하는 작업을 예약하였다.
 

1분마다 각 계정에서 수행되는 내용이 user.txt 파일에 기록되는 것을 확인할 수 있다.
 

root 계정에서의 작업 내역을 crontab -r 명령을 통해 삭제하면, 일반 사용자 계정의 작업만이 수행되는 것을 확인할 수 있다.
 

예약된 작업 내역은 계정별로 /var/spool/cron 디렉토리의 하위에 저장된다.
 
3) run-parts
디렉토리 내의 여러 스크립트를 한 번에 수행하기 위해 사용한다.
 

/rtest 디렉토리의 하위에 first.sh, second.sh, three.sh 파일을 생성하고 다음과 같이 내용을 작성하였다. /rtest/happy 파일에 내용을 삽입하는 문구가 작성되어 있는 파일들이다.
 

*주의*
run-parts를 사용하는 경우, 반드시 파일들의 권한을 755 로 지정하여 실행 권한을 부여해주어야 한다.
 

run-parts 의 수행을 위해서 /etc/crontab 파일에 등록해주는 과정을 거쳐야 한다. 1분 간격으로 /rtest 디렉토리 하위의 파일들이 수행되도록 설정하였다.
 

cron 데몬을 재시작하고 /rtest 디렉토리 목록을 확인해보면, happy 라는 이름의 파일이 생성된 것을 확인할 수 있다.

tail -f 명령으로 happy 파일을 모니터링하면, 1분 간격으로 /rtest 디렉토리 하위의 모든 파일들이 주기적으로 실행되는 것을 확인할 수 있다.
 
 

Window 작업 예약

 





공부하면서 정리한 내용을 글로 작성하였습니다.
혹시나 잘못된 내용이 있다면 댓글로 알려주시면 감사하겠습니다. :)

COMMENT