본문 바로가기
시스템운영

[ solaris ] crontab

by 보이드메인 2016. 1. 5.

1. cron 명령은 지정된 날짜와 시간에 일정 작업을 주기적으로 수행하기 위해 사용되

며 각 사용자별로 /var/spool/cron/crontabs 디렉토리에 사용자 ID와 같은 이름의

crontab 화일을 만들어 cron job을 지정할 수 있다.


cron 명령은 시스템이 부팅되면서 /etc/rc2.d/S75cron 스크립트에 의해서 daemon

형태로 수행된다.


2. 각 사용자 별로 crontab 화일을 만드는 방법은 아래와 같이 "crontab -e" 명령을

실행하면 된다.


% crontab -e


위와 같이 명령을 실행하면 "vi" editor mode로 들어가 crontab 화일을 수정할수

있게 되는데, 만약 "vi" mode로 들어가지 않으면 "EDITOR" 환경변수를 vi로 변경

후 crontab 명령을 다시 수행한다.


2.1 csh을 사용하는 경우


% setenv EDITOR vi

% crontab -e


2.2 sh이나 ksh을 사용하는 경우


$ EDITOR=vi

$ export EDITOR

$ crontab -e


3. crontab 화일의 내용을 정의 하는 format은 아래와 같다.


분 시 일 월 요일 실행할 명령


분 : 0-59

시 : 0-23

일 : 1-31

월 : 1-12

요일 : 0-6( 0: 일요일)


예) 매주 일요일 오전 3:15에 /var 디렉토리에 있는 core 화일을 지우는 작업


15 3 * * 0 find /var -name core 2>/dev/null | xargs rm -f


매월 1일 오후 6시에 시스템 down message 보내기


0 18 1 * * wall "System Will be down"


4. /etc/cron.d/cron.allow 화일이나 /etc/cron.d/cron.deny 화일을 이용하여 시스템

관리자는 각 사용자별로 crontab 화일에 대한 access 권한을 제한 할 수 있다.


4.1 crontab을 access 할 수 있는 사용자


- /etc/cron.d/cron.allow 화일이 존재하는 경우, 그 화일 안에 지정된 사용자


- /etc/cron.d/cron.allow 화일이 없는 경우, /etc/cron.d/cron.deny 화일

안에 지정되지 않은 사용자


4.2 crontab을 access 할 수 없는 사용자


- /etc/cron.d/cron.allow 화일이 존재하는 경우, 그 화일 않에 지정되지 않은

사용자


- /etc/cron.d/cron.allow 화일이 없는 경우, /etc/cron.d/cron.deny 화일에

지정된 사용자


- /etc/cron.d/cron.allow와 /etc/cron.d/cron.deny 화일이 모두 없는 경우,

root를 제외한 모든 사용자


4.3 OS가 설치되면 기본적으로 /etc/cron.d/cron.deny이 생성되고 그 안에 아래의

사용자들이 지정된다.


daemon

bin

smtp

nuucp

listen

nobody

noaccess


/etc/cron.d/cron.allow와 /etc/cron.d/cron.deny 화일에 사용자를 지정할 때

는 위와 같이 한줄에 한명씩 사용자를 지정한다.


5. cron에 관련된 환경은 /etc/default/cron 화일에 정의 할 수 있다.


% cat /etc/default/cron


CRONLOG=YES

PATH=/usr/bin:/usr/ucb:



crontab 파일

/var/spool/cron/crontabs/ 디렉토리에는 system crontab 파일과 user crontab 파일이 들어 있다. 이 파일들의 이름은 파일 소유자의 계정이름으로 되어 있다.

예를 들어, guest 사용자 계정의 crontab 파일이름은 guest이다.



# ls /var/spool/cron/crontabs

adm lp root sys uucp

#


crontab 파일에는 시간에 따라 주기적으로 실행할 명령들이 들어 있다. 이러한 명령은 날마다, 주마다, 달마다 지정한 시각에 실행시킬 수 있다.


crontab 파일의 엔트리의 구성은 6개의 필드로 구성되어 있으며 각각의 필드는 공백이나 탭으로 구분된다. 필드값이 asterisk(*)은 매일/매주/매월을 의미한다.

다음의 예를 보자.



10 3 * * 0,4 /etc/cron.d/logchecker

10 3 * * 0 /usr/lib/newsyslog

15 3 * * 0 /usr/lib/fs/nfs/nfsfind

1 2 * * * [ -x /usr/sbin/rtc ] && /usr/sbin/rtc -c

30 3 * * * [ -x /usr/lib/clean ] && /usr/lib/clean


위 예에서 각 필드의 의미는 다음과 같다.

field values description

minute 0 에서 59 시간의 분을 표시

hour 0 에서 23 하루의 시간을 표시

day 1 에서 31 달의 날짜를 표시

month 1 에서 12 년의 달을 표시

weekday 1 에서 6 주중 요일(0=일요일)

command N/A 실행할 명령




10 3 * * 0,4 /etc/cron.d/logchecker에서 보는 바와 같이

필드에 여러개의 값을 넣어야 할 때는 컴마로 구분하여 여러 값을 지정할 수 있다. 예에서 5번재 필드 0,4는 0=일요일을 의미하고 4=목요일을 의미하므로 이 문장은 매주 일요일과 목요일 A.M 3:10분에 logchecker 명령이 실행된다.



crontabs 다루기

crontab명령을 사용하여 crontabs을 create/delete/list/edit할 수 있다.

옵션없이 crontab 명령을 실행시키면 표준입력인 키보드로 입력함을 의미한다.

그리고 일반 사용자가 Ctrl+D로 끝내면 crontab 파일이 만들어진다. 이 때 기존에 파일이 존재하면 겹쳐쓰기로 파일에 기록된다.

일반사용자가 crontab 파일을 다른 이름으로 저장하고 싶으면 crontab 명령에 옵션으로 파일이름을 지정하면 사용자 crontab을 새로 만들거나 겹쳐쓰기가 이루어 진다.


-e 옵션과 함께 crontab 명령을 실행하면 쉘에서 EDITOR로 지정한 문서 편집기가 실행되어 사용할 수 있게 된다. 만약 EDITOR가 지정되어 있지 않으면 ed 편집기가 구동된다.

crontab -l 명령은 사용자의 crontab의 내용을 볼수 있으며, crontab -r 명령은 사용자 crontab을 삭제하게 된다.


superuser는 다른 사용자의 계정의 crontab을 통제하기 위해서는 사용자 계정 이름을 지정할 수 있다. 이 처럼 다른 사용자 계정 이름을 -l이나 -r 옵션과 함께 사용하여 그 사용자의 crontab의 내용을 list하거나 delete할 수 있지만, -e 옵션으로 다른 사용자의 계정이름을 지정할 수 없다.



10 3 * * 0,4 /etc/cron.d/logchecker <-- 로그 체크 데몬 한도를 넘는지 체크 한다

10 3 * * 0 /usr/lib/newsyslog

15 3 * * 0 /usr/lib/fs/nfs/nfsfind

1 2 * * * [ -x /usr/sbin/rtc ] && /usr/sbin/rtc -c > /dev/null 2>&1

30 3 * * * [ -x /usr/lib/gss/gsscred_clean ] && /usr/lib/gss/gsscred_clean



10 3 * * * /usr/sbin/logadm

-- The first line runs the logadm command at 3:10 a.m. every day.

15 3 * * 0 /usr/lib/fs/nfs/nfsfind

-- The second line executes the nfsfind script every Sunday at 3:15 a.m.

1 2 * * * [ -x /usr/sbin/rtc ] && /usr/sbin/rtc -c > /dev/null 2>&1

30 3 * * * [ -x /usr/lib/gss/gsscred_clean ] && /usr/lib/gss/gsscred_clean

-- The third line runs a script that checks for daylight savings time

-- (and make corrections, if necessary) at 2:10 a.m. daily.

If there is no RTC time zone, nor an /etc/rtc_config file, this entry does nothing


--------------------------------------------

messages 쌓이는것은

/etc/syslog.conf 에서 설정 하고요


주기별로 메시지가 쌓이게 하는 설정부분이에요

messages.0 messages.1 messages.2 messages.3


/var/adm/message

usr/lib/newsyslog <=== 솔라리스 8버젼 이하

usr/sbin/logadm <=== 솔라리스 9버젼

-------------------------------------------------


-- 실시간으로 시간을 동기화 해주는 프로세스(GMT 와 real time)

/usr/sbin/rtc

-------------------------------------------------

-- nfsfind는 nfs 연결된 부분을 찾고 연결시켜 주는 프로세스

/usr/lib/fs/nfs/nfsfind


-------------------------------------------------

운영체제랑 맵핑된 중복된 유닉스 UID 테이블을 제거하고 UID를 클리어 해준다.

/usr/lib/gss/gsscred_clean

-------------------------------------------------



'시스템운영' 카테고리의 다른 글

Linux 보안일반사항  (0) 2016.01.05
[UNIX] Shared Memory 설정  (0) 2016.01.05
[Solaris] 계졍설정  (0) 2016.01.05
[Solaris] 시스템 관리명령  (0) 2016.01.05
[LINUX/UNIX] 명령어 요약  (0) 2016.01.05

댓글