atd 스케줄러를 통한 작업 오류 문제 해결

문제 상황 :
정상적으로 동작하던 at 스케줄러가 어느날부터 동작을 하지 않는 경우

문제 발생 환경 :

at-3.1.10-43.el6_2.1.x86_64
bash-4.1.2-15.el6_5.1.x86_64 (_5.2 also affected)
environment-modules-3.2.10-1.el6_5.x86_64

원인 :

2014년 후반 경에 bash bug로 인한 shellshock 보안 위험이 발생하여 대부분 bash 프로그램을
업그레이드 함.

at 의 경우 특정 명령을 스케줄러에 등록하면 at에서 자동으로 bash script 형태로 수행작업을
만들게 됨.

RHEL 6.5 이하 기본 at 버전에서 자동 생성되는 script 에 shellshock 에 영향을 주는 구문이
포함되어, bash shellshock 문제에 대한 업그레이드가 된 시스템 환경에서는 정상적으로 at
script 가 동작하지 않는 문제가 발생함.

확인은 at 에서 생성된 스크립트를 임의로 실행해 보면 아래와 같은 에러가 발생

cd /var/spool/at

sh -x a00014016a5530

.
.
+ XAUTHORITY=/root/.xautho0AeSZ
+ export XAUTHORITY
a00014016a5530: line 55: syntax error near unexpected token =\(\)\ {\ \ eval\ \/usr/bin/modulecmd\ bash\ \$*`”
“}’
a00014016a5530: line 55: `”}; export BASH_FUNC_module()’

해결 방법 :

기본 RHEL 6.5 에 설치되는 at 버전은 at-3.1.10-43.el6 버전임. at-3.1.10-45.el6 버전에서
해당 문제가 패치됨.

at-3.1.10-45.el6 이상버전 (at-3.1.10-48.el6) 을 설치하고, at 에 등록된 스케줄 작업을 모두
삭제한 후, 다시 작업을 스케줄러에 등록해야 한다.

기존에 생성된 스케줄 작업은 이미 잘못된 구문이 반영되어 script 가 작성되어 있는 상태이다.
그렇기 때문에 at 업데이트 후에 다시 스케줄러에 작업을 등록하여 at script를 재 작성해야 한다.

참고로 at scripts 는 /var/spool/at 밑에 존재 한다.

서진우

슈퍼컴퓨팅 전문 기업 클루닉스/ 상무(기술이사)/ 정보시스템감리사/ 시스존 블로그 운영자

You may also like...