특정한 시간에 작업을 실행할 수 있도록 예약할 수 있는 두 가지 방법을 제공.
정해진 시간에 한 번만 실행하는 것이고, 정해진 시간에 반복해서 실행하는 것.
* 정해진 시간에 한 번만 실행
정해진 시간에 한 번만 명령을 실행하려면 at 명령을 실행.
1) at
- 기능 : 예약한 명령을 정해진 시간에 실행.
- 형식 : at [옵션] [시간]
- 옵션 :
-l : 현재 실행 대기 중인 명령의 전체 목록을 출력 (atq 명령과 동일)
-r 작업 번호 : 현재 실행 대기 중인 명령 중 해당 작업 번호를 삭제한다. (atrm과 동일. -d 와도 동일)
-m : 출력 결과가 없더라도 작업이 완료되면 사용자에게 메일로 알려준다.
-f 파일 : 표준 입력 대신 실행할 명령을 파일로 지정.
- ex) at -m 0730 tomorrow
at 10:00 pm
at 08:15 am May 30
위와 같이 하게 되면 프롬프트가 at> 으로 변경되며, 실행할 명령 입력 후 마치려면 Ctrl+d 를 누른다.
그러면 화면에는 <EOT>가 출력된다.
o at 4pm + 3days --> 지금부터 3일 후 오후 4시로 작업을 예약 (today, tommorow, hours, days, weeks 지정 가능)
o at 10am Jul 31 --> 7월 31일 오전 10시로 작업을 예약
o at 1am tomorrow --> 내일 오전 1시로 작업을 예약
o at 10:00am today --> 오늘 오전 10시로 작업을 예약
at로 설정한 작업의 결과는 지정된 파일에 저장됨. 만약 표준 출력을 파일로 전환하지 않았다면 작업 결과가 메일로 전달됨.
(시스템에 메일이 설정되어 있어야 한다.)
2) at 작업 파일 확인하기
at로 생성된 작업 파일은 /var/spool/at 디렉토리에 저장됨. 작업 번호로 파일이 생성. 예약된 명령이 샐행되면 자동으로 삭제.
/var/spool/at 디렉토리는 데몬 사용자만 읽을 수 있는 권한이기 때문에 su -root 명령으로 root 사용자로 변경하여
확인하여야 한다.
3) at 작업 목록 확인하기 : -l 옵션과 atq 옵션
- at 명령으로 설정된 작업의 목록은 -l 옵션으로 확인 가능.
ex) at -l
- atq 명령
현재 사용자의 등록된 작업 목록을 보여준다. 슈퍼 유저일 경우 모든 사용자의 작업 목록을 보여준다.
형식 : atq
ex) atq
4) at 작업 삭제하기 : -d 옵션과 atrm
at 명령으로 설정한 작업이 실행되기 전에 삭제하려면 -d 옵션을 사용하고 삭제할 작업 번호를 지정
- atrm
기능 : 지정된 작업 번호의 작업을 삭제함.
형식 : atrm 작업 번호
ex) atrm 3 --> 작업 번호 3을 삭제
at -d 4 --> 작업 번호 4를 삭제
5) at 명령 사용 제한하기
시스템 관리자는 일반 사용자들이 at 명령의 사용을 제한할 수 있다.
이와 관련한 파일은 /etc/at.allow (사용을 허용)와 /etc/at.deny (사용을 제한) 다.
at 명령의 사용이 허용된 사용자들은 /etc/at.allow 파일에 지정하고, 제한된 사용자들은 /etc/at.deny 파일에 지정
at.deny 파일은 기본적으로 있지만, at.allow 파일은 없으므로 필요시에 관리자가 만들어야 한다.
파일에는 사용자 이름을 한 줄에 하나씩만 입력.
- /etc/at.allow 파일이 있으면 이 파일에 지정된 사용자만 at 명령을 사용할 수 있다. /etc/at.deny 파일은 무시됨.
- /etc/at.allow 파일이 없으면 /etc/at.deny 파일에 지정된 사용자를 제외한 모든 사용자가 at 명령을 사용할 수 없음.
- 만약 두 파일이 모두 없으면 root만 at 명령을 사용할 수 있다.
- 사용자가 두 파일에 모두 속해 있다면 at 명령을 사용할 수 있다. /etc/at.allow 파일이 적용되기 때문.
- /etc/at.deny를 빈파일로 두면 모든 사용자가 at 명령을 사용할 수 있는데, 이것이 초기 설정이다.
예를 들어 /etc/at.allow 파일이 있는데 user1 사용자가 없거나 /etc/at.deny 파일에 있다면 at 명령을 실행하면
사용 권한이 없다는 메시지가 출력.
* 정해진 시간에 반복 실행
정해진 시간이 되면 반복적으로 실행하도록 설정하는 crontab 명령.
1) crontab
- 기능 : 사용자의 crontab 파일을 관리
- 형식 crontab [-u 사용자 ID] [옵션] [파일명]
- 옵션 :
-e : 사용자의 crontab 파일을 편집
-l : crontab 파일의 목록을 출력
-r : crontab 파일을 삭제.
- ex) crontab -l
crontab -u user1 -e
crontab -r
2) crontab 파일 형식
crontab 명령으로 관리하는 파일은 사용자별로 생성되는데 이 파일에 반복 실행할 작업이 저장됨.
crontab 파일에는 여러 개의 작업을 저장할 수 있으며 한행에 하나의 작업을 설정한다.
crontab 파일의 한 행에는 다음과 같이 여섯 항목으로 구성되어 있음.
분 (0~59) | 시 (0~23) | 일 (1~31) | 월 (1~12) | 요일 (0~6) | 작업 내용 |
앞에서부터 다섯 항목은 시간과 날짜를 나타내는 숫자이고 마지막 항목은 반복적으로 수행할 명령이다.
요일의 경우 0이 일요일, 6이 토요일이다.
시간과 날짜를 나타낼 때 각 항목은 공백문자로 구분함. 항목의 값이 '*' 이면 해당 항목의 모든 값을 의미함.
ex) 30 23 1 * * /usr/bin/ls -l ~user1 > ~user1/cron.out
매월 1일 23시 30분에 위의 작업 내용을 실행하라는 뜻. (월과 요일은 '*' 이므로 매월 모든 요일을 뜻함)
3) crontab 파일 생성하고 편집하기 : crontab -e (이렇게 입력하면 vi 편집기가 나옴)
crontab 파일의 생성과 편집은 crontab -e 명령으로 수행한다.
crontab 편집기로는 기본적으로 VISUAL 또는 EDITOR 환경 변수에 지정된 편집기를 사용한다.
필요할 경우 다음과 같이 명시적으로 편집기를 지정할 수 있다.
[user1@localhost ~]$ EDITOR=vi;export EDITOR
crontab -e 명령으로 편집한 파일은 저장하면 자동적으로 /var/spool/cron 디렉토리에 사용자 이름으로 생성됨.
이 디렉토리도 일반 사용자는 접근할 수 없으며 시스템 관리자만 접근이 가능.
4) crontab 파일 내용 확인하기 : crontab -l
crontab -l 명령을 실행하면 현재 사용자의 crontab 파일 내용이 출력된다.
ex) crontab -l
5) crontab 파일 삭제하기 : crontab -r
crontab 파일을 삭제하려면 crontab -r 명령을 사용.
만일 시스템 관리자가 특정 사용자의 crontab을 삭제하려면 'crontab -u user1 -r'과 같이 삭제하려는 사용자 ID를
지정한다.
6) crontab 명령 사용 제한하기
at 명령과 마찬가지로 crontab 명령도 /etc/cron.allow와 /etc/cron.deny 파일로 crontab 명령 사용 권한을 제한할 수
있다. 두 파일에는 사용자 이름을 한 줄에 하나씩만 입력한다.
cron.deny 파일은 기본적으로 있지만 cron.allow 파일은 관리자가 만들어야 한다.
두 파일이 적용되는 기준은 아래와 같다.
- /etc/cron.allow 파일이 있으면 이 파일에 지정된 사용자만 crontab 명령을 사용할 수 있다.
- /etc/cron.allow 파일이 없고 /etc/cron.deny 파일이 있으면 이 파일에 사용자 계정이 없어야 crontab 명령을
사용할 수 있다.
- /etc/cron.allow 파일과 /etc/cron.deny 파일이 모두 없으면 시스템 설정에 따라 시스템 관리자만 crontab 명령을
사용할 수도 있고 모든 사용자가 사용할 수도 있다.
만약 두 파일이 모두 없는데 일반 사용자가 crontab 명령을 사용하려고 하면 사용할 수 없다는 메시지가 출력된다.
'컴퓨터 세상 > LiNuX' 카테고리의 다른 글
리눅스의 기초 명령어 (0) | 2023.03.09 |
---|---|
리눅스의 기초 (0) | 2023.03.09 |
작업 제어 (포그라운드&백그라운드) (0) | 2022.05.19 |
프로세스 관리 명령 (0) | 2022.05.17 |
프로세스의 개념 (0) | 2022.05.17 |