SW/리눅스

Linux : At 명령어, 예제, 사용 방법

얇은생각 2022. 9. 7. 07:30
반응형

at는 특정 시간에 실행할 명령을 예약할 수 있는 명령줄 유틸리티입니다. at로 생성한 작업은 한 번만 실행됩니다.

at 및 그 동반 유틸리티 배치 atq, atrm을 사용하여 나중에 실행할 작업을 보고 삭제하고 생성하는 방법에 대해 설명합니다.

 

 

Linux : At 명령어, 예제, 사용 방법

 

 

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의 사용 가능한 모든 옵션에 대한 자세한 내용을 참조하십시오.

 

 

 

참조

https://linuxize.com/post/at-command-in-linux/

반응형