강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

시스템크론의 데몬(crond) 기본 동작원리 분석

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

시스템크론의 데몬(crond) 기본 동작원리 분석

 

 

 

 

이번에는 앞에서 말씀 드린 시스템크론의 동작원리에 대해서 알아보겠습니다.

 

 

 

 우리의 목적은 시스템크론을 실무에 활용하는 것입니다.

 

 

 

 활용을 하기 위해서는 시스템크론이 어떤 방식으로 작동하는가를 알아야 합니다.

 

 

 

 이번 절에서 그것을 해결하고자 합니다.

 

 

 

 ~~ 시작합니다.

 

 

 

 

 

시스템 크론데몬 crond 실행 확인하기

 

 

 

 

crontab명령어의 사용법을 설명하기에 앞서 시스템에서 cron이 어떻게 동작하는가를 알아야 합니다.

 

 

 

 시스템에서 cron이 제대로 동작하기 위해서는 crond라는 크론데몬(cron daemon)이 동작하고 있어야만 합니다.

 

 

 

 

 

먼저 ps명령어로 crond가 동작중인가를 확인한 예입니다.

 

 

 

 다음 결과를 보면 crond라는 데몬이 root권한으로 실행되어 있음을 알 수가 있습니다.

 

 

 

 

 

[root@RockyLinux01 ~]# ps -ef | grep crond

root        1098       1  0 11:08 ?        00:00:00 /usr/sbin/crond -n

root        5176    1775  0 16:52 pts/0    00:00:00 grep --color=auto crond

[root@RockyLinux01 ~]#

 

 

 

 

여기서 확인한 crond라는 데몬이 실행되어 있어야만 시스템크론과 사용자크론의 모든 설정이 정상적으로 실행됩니다.

 

 

 

 , 시스템크론이든 사용자크론이든 모두 이 crond라는 데몬에 의해 콘트롤된다는 것을 의미합니다.

 

 

 

 

 

시스템 크론데몬 crond 실행, 중지, 재시작하기

 

 

 

 

그렇다면 이런 crond데몬은 어떻게 시작하고 종료하고 재시작할 수 있을까요? crond는시스템이 부팅하면서 자동실행됩니다.

 

 

 

 그리고 시스템이 종료할 때까지 계속 실행된 상태로 존재합니다.

 

 

 

 시스템 크론데몬인 crond를 실행,중지,재시작하려면 /etc/rc.d/init.d/crond스크립트를 이용합니다.

 

 

 

 

 

먼저 crond를 시작하기 위해서는 “/etc/rc.d/init.d/crond start”라고 하시면 됩니다.

 

 

 

 거의 대부분 리눅스 시스템이 부팅이 되면서 ntsysv 설정항목에 의해 crond가 시작되도록 설정되어 있으므로 crond는 부팅과 함께 자동 실행될 것입니다.

 

 

 

(이 책의 ntsysv명령어편 참조바람)

 

다음은 필자가 권하는 crond의 시작/종료/재시작방법입니다.

 

 

 

 , /etc/rc.d/init.d/디렉토리에는 시스템 부팅시에 실행/종료할 스크립트파일들이 존재합니다.

 

 

 

 그 중 crond라는 스크립트파일을 이용하여 다음과 같이 crond데몬의 시작/종료/재시작을 할 수 있습니다.

 

 

 

 

 

[root@RockyLinux01 rc.d]# ps -ef | grep crond

root        1098       1  0 11:08 ?        00:00:00 /usr/sbin/crond -n

root        5222    1775  0 16:58 pts/0    00:00:00 grep --color=auto crond

[root@RockyLinux01 rc.d]#

[root@RockyLinux01 rc.d]# systemctl stop crond

[root@RockyLinux01 rc.d]#

[root@RockyLinux01 rc.d]# ps -ef | grep crond

root        5228    1775  0 16:58 pts/0    00:00:00 grep --color=auto crond

[root@RockyLinux01 rc.d]#

[root@RockyLinux01 rc.d]# systemctl start crond

[root@RockyLinux01 rc.d]#

[root@RockyLinux01 rc.d]# ps -ef | grep crond

root        5231       1  0 16:58 ?        00:00:00 /usr/sbin/crond -n

root        5233    1775  0 16:59 pts/0    00:00:00 grep --color=auto crond

[root@RockyLinux01 rc.d]#

 

 

 

 

 시스템의 물리적인 위치를 정확하게 알고 있는 것이 매우 중요하다고 늘~~~ 강조하는 필자의 생각 때문이겠지요.

 

 

 

 

 

 

 

시스템의 기본 cron설정파일 /etc/crontab의 실행내용 분석

 

 

 

시스템 크론데몬인 crond /etc/crontab파일의 설정을 읽어 들여서 설정되어 있는 대로 실행을 합니다.

 

 

 

  다음의 /etc/crontab파일은 리눅스를 설치하면 기본적으로 설정되어 있는 시스템크론 설정파일의 내용으로서 시스템에 기본적으로 필요한 사항들을 주기적으로 자동실행하기 위한 설정사항입니다.

 

 

 

 

 

, /etc/crontab파일은 시스템 크론데몬인 crond에 의해 실행될 시스템관리에 꼭 필요한 주기적인 자동실행내용들이 저장되어 있는 파일입니다.

 

 

 

 이 파일의 기본설정내용을 살펴보면 다음과 같습니다.

 

 

 

 

 

[root@su250 ~]# cat /etc/crontab

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

HOME=/

 

# run-parts

01 * * * * root run-parts /etc/cron.hourly

02 4 * * * root run-parts /etc/cron.daily

22 4 * * 0 root run-parts /etc/cron.weekly

42 4 1 * * root run-parts /etc/cron.monthly

[root@su250 ~]#

 

[root@RockyLinux01 rc.d]# cat /etc/crontab

SHELL=/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root

 

# For details see man 4 crontabs

 

# Example of job definition:

# .---------------- minute (0 - 59)

# |  .------------- hour (0 - 23)

# |  |  .---------- day of month (1 - 31)

# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...

# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat

# |  |  |  |  |

# *  *  *  *  * user-name  command to be executed

 

[root@RockyLinux01 rc.d]#

 

 

 

이 파일의 주된 설정내용을 살펴보겠습니다.

 

 

 

 , 리눅스 시스템은 /etc/crontab파일의 설정에 의해 다음과 같이 주기적인 실행을 하게 됩니다.

 

 

다음은 시스템에 미리 설정되어 있는 cron파일과 디렉토리 입니다.

 

 

 

[root@RockyLinux01 ~]# ls -l /etc | grep cron

-rw-r--r--.  1 root    root       541 11  1  2022 anacrontab

drwxr-xr-x.  2 root    root        21  4 26 10:51 cron.d

drwxr-xr-x.  2 root    root        23  6  1 11:24 cron.daily

-rw-r--r--.  1 root    root         0 11  1  2022 cron.deny

drwxr-xr-x.  2 root    root        22  4 26 10:51 cron.hourly

drwxr-xr-x.  2 root    root         6  5 11  2022 cron.monthly

drwxr-xr-x.  2 root    root         6  5 11  2022 cron.weekly

-rw-r--r--.  1 root    root       451  5 11  2022 crontab

[root@RockyLinux01 ~]#

 

 

 

 

 

 

매시 1회 자동실행하기위한 시스템 크론설정

 

 

 

01 * * * * root run-parts /etc/cron.hourly

 

 

 

 

/etc/crontab파일 내에 존재하는 이 내용은 매일 매시 01분마다 /etc/cron.hourly디렉토리내에 존재하는 스크립트파일들을 실행하게 됩니다.

 

 

 

 

 

, /etc/cron.hourly 디렉토리에서 실행되는 파일들은 다음과 같습니다.

 

 

 

 , 매시 01분마다 실행될 내용이 /etc/cron.hourly디렉토리에 저장되어 있는 것입니다.

 

 

 

 현재는 아무런 실행작업이 설정되어 있지 않습니다.

 

 

 

 

 

[root@RockyLinux01 ~]# ls -l /etc/cron.hourly/

합계 4

-rwxr-xr-x. 1 root root 610 11  1  2022 0anacron

[root@RockyLinux01 ~]#

 

 

 

 

따라서 여러분들께서 매시 01분마다 실행시키고자 하는 특정작업내용이 있다면 /etc/cron.hourly디렉토리에 스크립트파일로 만들어서 넣어두시면 됩니다.

 

 

 

 

 

 

매일 1회 자동실행하기위한 시스템 크론설정

 

 

 

02 4 * * * root run-parts /etc/cron.daily

 

 

 

/etc/crontab파일 내에 존재하는 위의 내용은 매일 새벽4 02분마다 /etc/cron.daily디렉토리내에 존재하는 파일들을 실행하게 됩니다.

 

 

 

 

 , 매일 한번씩 실행될 내용이 저장될 디렉토리이며 이 디렉토리에서 실행되는 파일들은 다음과 같습니다.

 

 

 

 

 

[root@su250 ~]# ls -l /etc/cron.daily/

합계 40

-rwxr-xr-x 1 root root  133 2005-09-2121:34 00webalizer

-rwxr-xr-x 1 root root  916 2022-10-24 22:05 0anacron

lrwxrwxrwx 1 root root   45 2022-12-01 22:08 0logwatch -> ../..//usr/share/logwatch/scripts/logwatch.pl

-rwxr-xr-x 1 root root 2243 2022-10-27 09:14 certwatch

-rwxr-xr-x 1 root root  180 2003-07-1004:36 logrotate

-rwxr-xr-x 1 root root  669 2022-09-16 21:05 makewhatis.cron

-rwxr-xr-x 1 root root  174 2022-10-28 13:21 mlocate.cron

-rwxr-xr-x 1 root root 2181 2006-06-2119:07 prelink

-rwxr-xr-x 1 root root  296 2022-10-31 17:31 rpm

-rwxr-xr-x 1 root root   98 2007-12-0217:03 texlive.cron

-rwxr-xr-x 1 root root  339 2022-02-23 10:50 tmpwatch

[root@su250 ~]#

 

 

 

 

만약 여러분들께서 매일 한번씩 자동 실행시키고자 하는 특정작업이 있다면 작업내용을 저장한 파일을 생성하여 /etc/cron.daily 디렉토리에 넣어두시면 됩니다.

 

 

 

 

 

 

매주 1회 자동실행하기위한 시스템 크론설정

 

 

 

 

22 4 * * 0 root run-parts /etc/cron.weekly

 

 

 

 

/etc/crontab파일 내에 존재하는 위의 내용은 매주 일요일 새벽 4 22분마다 /etc/cron.weekly디렉토리내에 존재하는 파일들을 실행하게 됩니다.

 

 

 

  , 매주 한번씩 반복적으로 자동 실행될 내용이 저장된 디렉토리이며 이 디렉토리에서 존재하는 파일들은 다음과 같습니다.

 

 

 

 

 

[root@su250 ~]# ls -l /etc/cron.weekly/

합계 4

lrwxrwxrwx 1 root root  22 2022-12-01 22:00 0anacron -> ../cron.daily/0anacron

-rwxr-xr-x 1 root root 663 2022-09-16 21:05 makewhatis.cron

[root@su250 ~]#

 

 

 

 

만약 여러분들께서 매주 한번씩 실행시키고자 하는 내용이 있다면 /etc/cron.weekly 디렉토리에 스크립트파일로 만들어서 넣어두시면 됩니다.

 

 

 

 

 

 

매월 1회 자동실행하기 위한 시스템 크론설정

 

 

 

 

42 4 1 * * root run-parts /etc/cron.monthly

 

 

 

 

/etc/crontab파일 내에 존재하는 위의 내용은 매월 1일 새벽 4 42분마다 /etc/cron.monthly디렉토리내에 존재하는 스크립트 파일들을 실행합니다.

 

 

 

  , 매월 한번씩 실행될 내용이 저장된 디렉토리이며 이 디렉토리에서 실행되는 파일들은 다음과 같습니다.

 

 

 

 

 

[root@su250 ~]# ls -l /etc/cron.monthly/

합계 0

lrwxrwxrwx 1 root root 22 2022-12-01 22:00 0anacron -> ../cron.daily/0anacron

[root@su250 ~]#

 

 

 

 

만약 여러분들께서 매월 한번씩 실행시키고자 하는 내용이 있다면 /etc/cron.monthly 디렉토리에 스크립트파일로 만들어서 넣어두시면 됩니다.

 

 

 

 

 

이렇게 리눅스는 시스템에 꼭 필요한 주기적인 실행내용들을 /etc/crontab파일에 설정해 두고서 시스템 크론데몬인 crond에 의해 실행시키고 있습니다.

 

 

 

 이 설정내용을 잘 활용한다면 시스템관리에 매우 효율적으로 활용할 수 있습니다.

 

 

 

 

 

, 지금까지의 크론(cron)에 대한 설명은 이미 시스템에 설정되어있는 시스템크론설정(/etc/crontab파일과 관련 디렉토리들)을 이용하는 방법이었습니다.

 

 

 

 

 

 

 

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,068 명
  • 현재 강좌수 :  35,976 개
  • 현재 접속자 :  293 명