Linux/Linux 실습

사용자 크론(Cron) 생성/제거

GGkeeper 2021. 11. 6. 23:19

실습> 사용자 크론 설정

크론 종류 : 사용자 크론
사용자 : user1 
시간 : 1분 마다 실행
명령어 : date
사용자 크론이 저장되는 경로 : /var/spool/cron
사용자 크론을 등록하는 파일 : /usr/bin/crontab (-rwsr-xr-x. 1 root root)  

date 명령어를 1분 마다 실행해서 /tmp/date2.txt 파일에 시간을 저장하는 사용자 크론을 설정한다.

1. 사용자 생성
[root@localhost ~]# useradd user1
[root@localhost ~]# passwd user1
[root@localhost ~]# su - user1

2. 사용자 크론 등록
crontab -e 로 실행하면 /tmp 디렉터리에 임시파일이 랜덤으로 생기고 이 파일을 vi 편집기가 편집하게 된다.
아래 예제는 /tmp/crontab.4k51vt 파일명으로 랜덤으로 설정된 것이다.
크론 설정을 하고 vi 편집기를 저장하고 종료하면 사용자 크론 등록을 완료한 것이다..


[user1@localhost ~]$ crontab -e
# date 명령어를 1분 마다 실행해서 /tmp/date2.txt 파일에 저장한다.
* * * * * date >> /tmp/date2.txt

요일은 0부터 시작, 일요일이다. * 대신 범위 안의 숫자를 넣어 구체적인 주기를 정할 수 있다.
숫자와 * 외에도 다른 특수기호와 같이 입력할 수 있다.

  • / : 매 n 마다 실행
  • – : n에서 m까지 실행
  • , : n, m에 실행


[user1@localhost ~]$ crontab -l
# date 명령어를 1분 마다 실행해서 /tmp/date2.txt 파일에 저장한다.
* * * * * date >> /tmp/date2.txt

[user1@localhost ~]$ exit

3. 사용자 크론 파일 확인
일반 유저의 파일이 /var/spool/cron 디렉터리에 저장된다.
/usr/bin/crontab 파일이 setuid가 설정되어 있어서 가능하다.
[root@localhost ~]# ls -l /var/spool/cron/
합계 4
-rw-------. 1 user1 user1 118  1월 14 16:54 user1

파일을 확인해보면 아래처럼 저장된 것을 확인할 수 있다.
[root@localhost ~]# cat /var/spool/cron/user1
# date 명령어를 1분 마다 실행해서 /tmp/date2.txt 파일에 저장한다.

* * * * * date >> /tmp/date2.txt


4. 파일 확인
1분 마다 date >> /tmp/date2.txt 파일로 잘 저장되는 것을 확인한다.
[root@localhost ~]# ls -l /tmp/date2.txt
-rw-r--r--. 1 user1 user1 66  1월 14 16:56 /tmp/date2.txt

[root@localhost ~]# tail -f /tmp/date2.txt
2021. 01. 14. (목) 16:55:01 KST
2021. 01. 14. (목) 16:56:01 KST
2021. 01. 14. (목) 16:57:01 KST
2021. 01. 14. (목) 16:58:01 KST
2021. 01. 14. (목) 16:59:01 KST
2021. 01. 14. (목) 17:00:01 KST
2021. 01. 14. (목) 17:01:01 KST
  :
  :

5. 로그 확인
관리자에서 /var/log/cron을 확인한다.
[root@localhost ~]# cat /var/log/cron
  :
  :(생략)
Jan 14 16:52:57 test2 crontab[103304]: (user1) BEGIN EDIT (user1)
Jan 14 16:53:01 test2 crond[102422]: (*system*) RELOAD (/etc/crontab)
Jan 14 16:54:39 test2 crontab[103304]: (user1) REPLACE (user1)
Jan 14 16:54:39 test2 crontab[103304]: (user1) END EDIT (user1)
Jan 14 16:55:01 test2 CROND[103411]: (user1) CMD (date >> /tmp/date2.txt)
Jan 14 16:56:01 test2 CROND[103467]: (user1) CMD (date >> /tmp/date2.txt)
Jan 14 16:57:01 test2 CROND[103523]: (user1) CMD (date >> /tmp/date2.txt)
Jan 14 16:58:01 test2 CROND[103577]: (user1) CMD (date >> /tmp/date2.txt)
Jan 14 16:59:01 test2 CROND[103630]: (user1) CMD (date >> /tmp/date2.txt)
Jan 14 17:00:01 test2 CROND[103683]: (user1) CMD (date >> /tmp/date2.txt)
Jan 14 17:01:01 test2 CROND[103739]: (root) CMD (run-parts /etc/cron.hourly)
Jan 14 17:01:01 test2 CROND[103741]: (user1) CMD (date >> /tmp/date2.txt)
  :
  :(생략)


6. 사용자 크론 삭제
user 사용자로 변경해서 등록된 사용자 크론을 확인하고 삭제한다.
[root@localhost ~]# su - user1
[user1@localhost ~]$ crontab -l
# date 명령어를 1분 마다 실행해서 /tmp/date2.txt 파일에 저장한다.
* * * * * date >> /tmp/date2.txt

-r 옵션을 이용해서 사용자가 cron을 설정한 것을 삭제한다.
[user1@localhost ~]$ crontab -r

다시 확인하면 cron에 설정된 내용이 없다. 결국 지워진 것이다.
[user1@localhost ~]$ crontab -l
no crontab for user1