2011년 5월 25일 수요일

솔라리스 scheduling 작업

Scheduleing은 특정시간과 날짜에 정규적이거나 반복적인 작업을 자동으로 할 수 있는 기능이라 말할 수 있겠다. 솔라리스에서는 crontab 명령어와 at 명령어를 이용하여 이런 한 작업을 수행할 수 있다.

crontab 과 at 명령어의 차이점을 간단히 설명 하자면 다음과 같다.
  • crontab은 멀티 시스템 환경하의 규칙적인 작업에 주로 사용하며 at은 싱글 시스템 하의 자동 작업 시 주로 사용 한다.
  • crontab은 /var/spool/cron/crontabs 디렉터리 밑의 파일에 유저별로 작업 내용이 저장 되고 at 은 /var/spool/cron/atjobs 디렉터리 밑에 파일로 저장 된다.
  • 각각의 데몬들은 /etc/cron.d/cron.allow 과 /etc/cron.d/cron.deny 그리고/etc/cron.d/at.deny 파일들에 의해 엑세스 컨트롤 된다.

그럼 crontab 과 at 명령어의 활용에 대해 말해 보겠다.
crontab 파일 create하기와 edit하기
# crontab -e 유지이름


위의 명령어는 슈퍼유저(root)일때 root이외의 다른 아이디의 crontab 파일을 수정 할 때 사용 합니다. root가 아닌 일반유저는 본인 이외의 다른 유저의 crontab작업을 create나 edit할 수 없습니다. 즉, 다른 사용자의 crontab 파일에 액세스하려면 슈퍼 유저이어야 합니다. 위의 방법으로 사용자나 슈퍼유저는 cron작업을 수정하거나 만들 수 있습니다.
# crontab -l 유저이름


위의 crontab 을 이용한 명령어는 crontab 파일에 지금 정의되어 있는 내용을 보여 줍니다. 물론 다른 사용자의 crontab 파일에 액세스하려면 슈퍼유저이어야 하는 것은 위와 같습니다.
# crontab -r 유저이름


위의 crontab 을 이용한 명령어는 crontab 설정을 삭제하는 것입니다.이것 역시 본이 이외의 것 외에는 슈퍼유저가 사용할 수 있는 것입니다.
/etc/cron.d/ 밑의 cron.deny 파일과 cron.allow의 파일의 기능은 무엇인지 알아봅니다.
cron.allow 파일은 솔라리스 최초 인스톨시에는 파일이 없습니다. 사용자의 목적에 따라 슈퍼유저가 만들어야 하는 파일입니다.
cron.allow의 역할은 파일에 등록되어 있는 유저(사용자)만이 cronatb 파일을 만들고 수정하고 삭제 할수 있는 권한을 가집니다. 만약 이 파일에 등록되어 있지 않은 유저는 전혀 사용할 수 없는 것입니다.
만약 cron.allow파일이 없다면 아무 유저나 crontab에 관한 모든 권한을 가질 수 있습니다.
cron.deny파일은 cron.allow파일의 반대되는 기능을 합니다. 기본적으로 cron.deny파일을 열어보면 다음의 것들이 등록 되어 있습니다.
daemon
bin
smtp
nuucp
listen
nobody
noaccess


위의 유저들은 솔라리스 소프트웨어 인스톨시 기본적으로 생성 됩니다. cron.deny파일에 moon이라는 유저와 shin 이라는 유저를 등록한다면 등록과 동시에 moon 과 shin 이라는 유저는crontab을 사용 할 수 없습니다.

at의 명령어 사용
at 명령어는 명령실행시간을 정하여 그 시간에 실행하게 해준다.
다음 예제는 at명령어를 사용한 예이다.
[ns/var/adm] at 11:45pm Jun 17 ----> 6월 17일 밤 11시45분에 실행
at> rm /var/adm/messages.1 ----> 원하는 명령줄을 입력 한다
at> <EOT> -----> Control+D 로 마무리 한다.

commands will be executed using /bin/csh
job 1024325101.a at Mon Jun 17 23:45:00 2002 -----> 결과를 보여 준다.


11시 45분에 틀림 없이 실행 됩니다. at명령어 사용의 제한은 /etc/cron.d/at.deny 파일을 수정 하면 됩니다. 기본적인 솔라리스의 /etc/cron.d/at.deny 파일을 열어 보면 다음과 같이 되어 있습니다.
[ns/etc/cron.d] vi at.deny
daemon
bin
smtp
nuucp
listen
nobody
noaccess


이 파일에 유저이름을 넣으면 그 유저는 at명령어를 사용 할 수 없게 됩니다. at.deny 파일은 보안설정에도 중요한 파일이므로 자주 수정 됩니다.
여러가지 사용 예 >>>>
[ns/etc] at -m 23:02 ---> -m옵션을 사용
at> rm /var/adm/message
at> <EOT>
commands will be executed using /bin/csh
job 1024322520.a at Mon Jun 17 23:02:00 2002


날짜하구 달을 넣지 않으면 현재의 달과 날짜라구 솔라리스는 생각 합니다. -m 옵션은 작업을 마친 후 at을 실행한 유저에게 메일을 보내라는 옵션 입니다. 그 메일은 다음과 같은 형식으로 메일을 보냅니다.
Your "at" job "rm /var/ad/message"
completed.


그럼 at으로 행한 작업들이 뭐 뭐가 있나 궁금 한데 알아 보는 방법은 솔라리스에서는 at queue라고 합니다.
atq 명령어를 넣으면 다음과 같이 보여 줍니다.
[ns/export/moon] atq
Rank Execution Date Owner Job Queue Job Name
1st Jun 17, 2002 23:45 root 1024325100.a a stdin
2nd Jun 17, 2002 23:45 root 1024325101.a a stdin


순서 시간 유저 일 식으로 열거 하여 줍니다.
at -l 명령어로도 다음과 같이 확인을 할수 있습니다.
[ns/export/moon] at -l
user = root 1024325100.a Mon Jun 17 23:45:00 2002
user = root 1024325101.a Mon Jun 17 23:45:01 2002


작업 내용을 취소 하구 싶으면 -r옵션을 사용 합니다.
[ns/export/moon] at -r 1024325101.a ---> 위의 at PID 1024325101.a 가 삭제 됩니다.

댓글 없음:

댓글 쓰기

ETL 솔루션 환경

ETL 솔루션 환경 하둡은 대용량 데이터를 값싸고 빠르게 분석할 수 있는 길을 만들어줬다. 통계분석 엔진인 “R”역시 하둡 못지 않게 관심을 받고 있다. 빅데이터 역시 데이터라는 점을 볼때 분산처리와 분석 그 이전에 데이터 품질 등 데이...