[Linux]at 명령어로 일회성 작업을 예약해 봅시다
at
명령어는 한 번만 실행되거나 주어진 시간에 한 번 실행되는 작업을 예약하는 데 사용됩니다. at관련된 파일들과 명령어들로는 아래와 같으며, Linux 서버 취약점 분석/조치법 중 “at 파일 소유자 및 권한 설정”을 참고하시기 바랍니다.
- /etc/at.allow: at 명령어를 사용할 수 있는 사용자 등록
- /etc/at.deny: at 명령어를 사용할 수 없는 사용자 등록
- atq: 예약 작업 출력
- atrm <작업번호>: 지정된 예약 작업의 취소
- at.allow 및 at.deny 파일 사용법
- at.deny파일보다 at.allow 파일이 우선합니다.
- at.allow파일이 없다면 at.deny에 등록된 사용자를 제외하고 모든 사용자가 at 명령어를 사용할 수 있습니다.
- at.deny이 빈 파일이라면 모든 사용자는 at 명령어를 사용할 수 있습니다.
- 두 파일이 모두 없다면 root 사용자만 at 명령어를 사용할 수 있습니다.
- at 명령어 옵션
-q <큐>: 작업을 위한 큐 지정(a~z, A~Z), 지정하지 않을 경우 기본값 "a", 높은 글자일수록 nice값 증가. -t <시간>: 형식 [[CC]YY]MMDDhhmm[.ss] -f <실행파일>: 지정된 실행파일 실행 -m: 작업이 완료되면 사용자에게 메일로 통보 -M: 작업이 완료되도 사용자에게 이메일을 보내지 않음 -l: 예약된 작업 목록을 보여준다 (== `atq`) -d <작업번호>: 예약된 작업 삭제 (== `atrm <작업번호>`) -r <작업번호>: 예약된 작업 삭제 (== `atrm <작업번호>`)
- at 명령어 예시
- at 명령 프롬프트에서 예약 작업 등록: yyyy-mm-dd hh:mm에 입력된 명령어 실행
$ at hh:mm yyyy-mm-dd at> 명령어 줄 입력 at> <EOT>(Ctrl+D) $ at 23:59 2021-12-31 at> echo "Happy new year" > ~/greeting.txt at> <EOT>(Ctrl+D)
- yyyy-mm-dd hh:mm에 지정된 실행파일 실행
at hh:mm yyyy-mm-dd -f <file_name> $ at 23:59 2021-12-31 -f <file_name>
- 지금으로부터 입력된 숫자의 분/시/일/주 이후에 지정된 실행파일 실행
$ at now+숫자 [minutes | hours | days | weeks] -f <file_name> #1분 이후에 지정된 실행파일 실행 $ at now+1 minutes -f <file_name>
- 지정된 날짜의 특정한 시간에 지정된 실행파일 실행
$ at 시간 [ today | tomorrow | MMM dd) -f <file_name> $ at 12am today -f <file_name> $ at 12am tomorrow -f <file_name> $ at 12am Jul 31 -f -f <file_name> $ at 4:30pm Jul 31 -f -f <file_name>
- -f <file_name> 대신 파이프 라인으로 실행 명령어 지정
$ echo "shutdown -h now" | at 12am tomorrow
- at 명령 프롬프트에서 예약 작업 등록: yyyy-mm-dd hh:mm에 입력된 명령어 실행