at는 특정 시간에 실행할 명령을 예약할 수 있는 명령줄 유틸리티입니다. at로 생성한 작업은 한 번만 실행됩니다.
at 및 그 동반 유틸리티 배치 atq, atrm을 사용하여 나중에 실행할 작업을 보고 삭제하고 생성하는 방법에 대해 설명합니다.
at 설치
배포에 따라 Linux 시스템에 가 있을 수도 있고 없을 수도 있습니다.
이 설치되어 있지 않으면 배포의 패키지 관리자를 사용하여 쉽게 설치할 수 있습니다.
Ubuntu 및 Debian에 설치합니다.
sudo apt update
sudo apt install at
CentOS 및 Fedora에 설치합니다.
sudo yum install at
프로그램이 설치되면 스케줄링 데몬이 실행 중이고 부팅 시 시작하도록 설정되어 있는지 확인합니다.
sudo systemctl enable --now atd
명령에서 를 사용하는 방법을 참조하십시오.
at 명령의 단순화된 구문은 다음과 같습니다.
at [OPTION...] runtime
at 명령은 명령줄 매개 변수로 작업을 실행할 날짜 및 시간(런타임)과 표준 입력에서 실행할 명령을 사용합니다.
오전 9시에 실행될 작업을 생성해 보겠습니다.
at 09:00
# warning: commands will be executed using /bin/sh
# at>
Enter 키를 누르면 at 명령 프롬프트가 표시됩니다. 명령 프롬프트는 주로 at로 시작합니다. 또한 명령이 실행될 셸을 알려주는 경고가 표시됩니다.
실행할 명령을 하나 이상 입력합니다.
tar -xf /home/jjeongil/file.tar.gz
# at> <EOT>
# job 4 at Tue May 5 09:00:00 2020
명령 입력을 마쳤으면 Ctrl-D를 눌러 프롬프트를 종료하고 작업을 저장합니다.
명령은 작업 번호와 실행 시간 및 날짜를 표시합니다.
프롬프트에 명령을 입력하는 것 외에도 실행할 명령을 전달하는 다른 방법도 있습니다. 한 가지 방법은 echo를 사용하여 명령을 다음 위치로 파이핑하는 것입니다.
echo "command_to_be_run" | at 09:00
다른 옵션은 다음 문서를 사용하는 것입니다.
at 09:00 <<END
# command_to_be_run
# END
표준 입력 대신 파일에서 명령을 읽으려면 파일의 경로 옆에 -f 옵션이 있는 명령을 호출하십시오. 예를 들어 /home/jjeongil/script.sh 스크립트를 실행할 작업을 생성하려면 다음과 같이 하십시오.
at 09:00 -f /home/jjeongil/script.sh
기본적으로 명령이 출력을 생성하는 경우 작업이 완료되면 에서는 출력이 포함된 이메일을 사용자에게 보냅니다. 이메일 알림을 표시하지 않으려면 -M 옵션을 사용하여 at를 호출합니다.
at 09:00 -M
출력이 없는 경우에도 -m을 사용하여 전자 메일을 보냅니다.
at 09:00 -m
배치 명령
batch 또는 -b의 별칭은 시스템 로드 수준이 허용될 때 작업을 예약하고 배치 대기열에서 실행합니다. 기본적으로 작업은 시스템 로드 평균이 1.5 미만일 때 실행됩니다. atd 데몬을 호출할 때 로드 값을 지정할 수 있습니다. 시스템 로드 평균이 지정된 평균보다 높으면 작업이 대기열에서 대기합니다.
배치를 사용하여 작업을 생성하려면 실행할 명령을 전달하십시오.
echo "command_to_be_run" | batch
실행 시간을 지정
at 유틸리티는 광범위한 시간 사양을 허용합니다. 현재 시간, 날짜 및 증분을 지정할 수 있습니다.
Time - 시간을 지정하려면 HH를 사용합니다.MM 또는 HHMM 형식입니다. 12시간 시간 형식을 나타내려면 시간 뒤에 am 또는 pm을 사용합니다. 지금, 자정, 정오 또는 티타임(16:00)과 같은 문자열을 사용할 수도 있습니다. 지정한 시간이 지나면 작업이 다음 날 실행됩니다.
Date - 명령을 사용하여 지정된 날짜에 작업 실행을 예약할 수 있습니다. 날짜는 월 이름, 일, 선택적 연도를 사용하여 지정할 수 있습니다. 오늘, 내일, 평일 등의 문자열을 사용할 수 있습니다. 날짜는 MMDD[CC]를 사용하여 표시할 수도 있습니다.YY, MM/DD/[CC]입니다.YY, DD.M.[CC]입니다.YY 또는 [CC]입니다.YY-MM-DD 형식입니다.
Increment - now + count 시간 단위 형식의 증분을 사용할 수도 있습니다. 여기서 count는 숫자이고 시간 단위는 분, 시간, 일 또는 주 문자열 중 하나가 될 수 있습니다.
시간, 날짜 및 증분을 결합할 수 있으며, 다음은 몇 가지 예입니다.
다음 주 일요일에 현재 시간보다 10분 늦은 시간에 작업을 예약하십시오.
at sunday +10 minutes
이틀 후 오후 1시에 작업이 실행되도록 예약하십시오.
at 1pm + 2 days
2020년 10월 21일 12:30에 작업이 실행되도록 예약합니다.
at 12:30 102120
1시간 후에 작업이 실행되도록 예약합니다.
at now +1 hours
또한 참조에서 시간과 날짜를 지정할 수 있습니다.-t 옵션을 사용하여 YY]MMDDhmm[.ss]를 클릭합니다. 다음은 예입니다.
at -t 202005111321.32
큐를 지정
기본적으로 at로 생성된 작업은 a라는 대기열에서 예약되고 b 배치로 생성된 작업은 b 대기열에서 예약됩니다.
쿼리에는 a에서 z, A에서 Z 사이의 이름을 사용할 수 있습니다. 낮은 글자의 대기열은 낮은 선명도로 실행되므로 높은 글자의 대기열보다 우선합니다.
-q 옵션으로 대기열을 지정할 수 있습니다.
예를 들어 L 대기열에서 작업을 설정하려면 다음을 실행합니다.
at monday +2 hours -q L
보류 중인 작업을 나열
사용자의 보류 중인 작업을 나열하려면 atq 또는 at -l 명령을 실행합니다.
출력에 모든 작업이 한 줄에 하나씩 나열됩니다. 각 줄에는 작업 번호, 날짜, 시간, 대기열 문자 및 사용자 이름이 포함됩니다.
atq
# 9 Tue May 5 12:22:00 2020 a jjeongil
# 12 Wed Oct 21 12:30:00 2020 a jjeongil
# 15 Tue May 5 09:00:00 2020 a jjeongil
# 6 Tue May 5 09:00:00 2020 a jjeongil
# 13 Mon May 4 23:08:00 2020 a jjeongil
# 11 Wed Jul 1 10:00:00 2020 a jjeongil
# 4 Tue May 5 09:00:00 2020 a jjeongil
atq가 관리 사용자로 호출되면 모든 사용자의 보류 중인 작업이 나열됩니다.
보류 중인 작업을 제거
보류 중인 작업을 제거하려면 atrm 또는 at -r 명령과 작업 번호를 차례로 호출하십시오. 예를 들어, 번호가 9인 작업을 제거하려면 다음을 실행합니다.
atrm 9
사용자를 제한
/etc/at.deny 및 /etc/at.allow 파일을 사용하면 at 또는 batch 명령을 사용하여 작업을 생성할 수 있는 사용자를 제어할 수 있습니다. 파일은 한 줄에 하나의 사용자 이름 목록으로 구성됩니다.
기본적으로 /etc/at.deny 파일만 존재하며 비어 있으므로 모든 사용자가 at 명령을 사용할 수 있습니다. 특정 사용자에 대한 사용 권한을 거부하려면 이 파일에 사용자 이름을 추가하십시오.
/etc/at.allow 파일이 존재하는 경우 이 파일에 나열된 사용자만 at 명령을 사용할 수 있습니다.
두 파일이 모두 없으면 관리 권한이 있는 사용자만 at 명령을 사용할 수 있습니다.
at 유틸리티는 표준 입력에서 명령을 읽고 나중에 실행합니다. crontab과 달리 at로 생성된 작업은 한 번만 실행됩니다.
터미널에서 at command type man의 사용 가능한 모든 옵션에 대한 자세한 내용을 참조하십시오.
참조
'SW > 리눅스' 카테고리의 다른 글
Linux : Ubuntu 20.04 : Timezone 설정, 변경 방법, 예제, 명령어 (0) | 2022.09.09 |
---|---|
Linux : groupdel : Group 삭제 방법, 예제, 명령어 (0) | 2022.09.08 |
Linux : Ubuntu 20.04 : Nginx 설치 방법, 예제, 명령어 (0) | 2022.09.06 |
Linux : Ubuntu 20.04 : Visual Studio Code 설치 방법, 예제, 명령어 (0) | 2022.09.05 |
Ubuntu 20.04 : Go 설치 방법, 예제, 명령어 (0) | 2022.09.04 |