분류 기타

Linux at 명령으로 작업 예약

컨텐츠 정보

  • 조회 564 (작성일 )

본문

at 명령어는 Linux 터미널에서 특정 시간과 날짜에 일회성 작업을 예약할 수 있는 방법입니다.


컴퓨터는 자동화에 능숙하지만 모든 사람이 자동화를 작동시키는 방법을 아는 것은 아닙니다. 하지만 특정 시간에 컴퓨터에 대한 작업을 예약하고 잊어버릴 수 있다는 것은 정말 사치스러운 일입니다.

특정 시간에 업로드 또는 다운로드할 파일이 있거나 아직 존재하지 않지만 특정 시간에 존재하는 것이 보장되는 파일 배치 또는 모니터링이 필요한 설정을 처리해야 하거나 그냥 필요할 수도 있습니다. 퇴근길에 빵과 버터를 사오라는 친절한 알림.


이것이 at 명령어의 용도입니다.


Linux at 명령이란 무엇인가요? 


at 명령어는 Linux 터미널에서 특정 시간과 날짜에 일회성 작업을 예약할 수 있는 방법입니다. 터미널에서 쉽게 만드는 자발적인 자동화입니다.


Installing at 


Linux에서는 at 명령어가 이미 설치되어 있을 수 있습니다. at -V 명령어를 사용하여 설치되었는지 확인할 수 있습니다. 버전이 반환되는 한 다음을 설치해야 합니다.

$ at -V
at version x.y.z 


at을 사용하려고 하는데 명령을 찾을 수 없는 경우 대부분의 최신 Linux 배포판은 누락된 at 패키지를 설치하도록 제안합니다.


atd라고 하는 at 데몬을 시작해야 할 수도 있습니다. 대부분의 Linux 시스템에서 systemctl 명령을 사용하여 서비스를 활성화하고 이제부터 서비스가 자동으로 시작되도록 설정합니다.


sudo systemctl enable --now atd 


at과 대화식으로 작업 예약 


작업을 실행하려는 시간과 함께 at 명령어를 사용하면 대화형 at 프롬프트가 열립니다. 지정한 시간에 실행할 명령을 입력할 수 있습니다.


도움이 된다면 이 프로세스를 휴대폰에서 사용하는 것과 같은 캘린더 앱으로 생각할 수 있습니다. 먼저 특정 날짜에 일정을 만든 다음 수행할 작업을 지정합니다.

예를 들어, 미래에 몇 분 동안 작업을 만들어 자신에게 메모를 예약해 보십시오. 실패 가능성을 줄이기 위해 작업을 단순하게 만드십시오. 프롬프트를 종료하려면 키보드에서 Ctrl+D를 누릅니다.


$ at 11:20 AM
warning: commands will be executed using /bin/sh
at> echo "hello world" > ~/at-test.txt
at> <EOT>
job 3 at Mon Jul 26 11:20:00 2021 



보시다시피 at은 직관적이고 자연스러운 시간 정의를 사용합니다. 24시간제를 알거나 시간을 UTC 또는 특정 ISO 형식으로 변환할 필요가 없습니다. 일반적으로 정오, 오후 1시 30분, 13시 37분 등과 같이 자연스럽게 떠오르는 표기법을 사용하여 작업이 발생하기를 원하는 시간을 설명할 수 있습니다.


몇 분 기다린 후 생성한 파일에서 cat 또는 tac 명령어를 실행하여 작업이 실행되었는지 확인합니다.


cat ~/at-test.txt
hello world 


at으로 작업 일정 잡기 


at으로 작업을 예약하기 위해 대화형 프롬프트를 사용할 필요가 없습니다. 대신 echo 또는 printf를 사용하여 명령을 파이프할 수 있습니다. 이 예에서는 지금 표기법을 사용하고 지금부터 몇 분 후에 작업이 지연되기를 원합니다.


echo "echo 'hello again' >> ~/at-test.txt" | at now +1 minute 


1분 후 새 명령이 실행되었는지 확인합니다.


cat ~/at-test.txt
hello world
hello again 


시간 표현 


at 명령어는 시간을 해석할 때 꽤 관대합니다. 가장 편리한 형식에 따라 다양한 형식 중에서 선택할 수 있습니다.


  • YYMMDDhhmm[.ss]
    (년, 월, 일, 시, 분 및 선택적으로 초로 축약됨)
  • CCYYMMDDhhmm[.ss]
    (연도, 월, 일, 시, 분 및 선택적으로 초)
  • now
  • midnight
  • noon
  • teatime (4 PM)
  • AM
  • PM

시간과 날짜는 절대적이거나 더하기 기호(+)를 추가하여 현재를 기준으로 할 수 있습니다. 상대 시간을 지정할 때 이미 사용하고 있는 단어를 사용할 수 있습니다.

  • minutes
  • hours
  • days
  • weeks
  • months
  • years

시간 및 날짜 구문 


at 명령어는 날짜에서 시간을 말할 때 덜 관대합니다. 날짜가 현재 날짜로 기본 설정되고 미래의 언젠가에 대한 작업을 예약할 때만 필요하지만 시간이 먼저 오고 그 다음에 날짜가 와야 합니다.


다음은 몇 가지 유효한 표현의 예입니다.

echo "rsync -av /home/tux me@myserver:/home/tux/" | at 3:30 AM tomorrow
echo "/opt/batch.sh ~/Pictures" | at 3:30 AM 08/01/2022
echo "echo hello" | at now + 3 days 


Viewing your at queue 


책상 주위에 놓여 있는 종이 조각에 메모를 낙서하는 대신 작업을 수용하고 일정을 잡고 나면 대기열에 아직 작업이 있는지 검토할 수 있습니다.


at 대기열을 보려면 atq 명령어를 사용하세요.

$ atq
10 Thu Jul 29 12:19:00 2021 a tux
9  Tue Jul 27 03:30:00 2021 a tux
7  Tue Jul 27 00:00:00 2021 a tux 


대기열에서 작업을 제거하려면 작업 번호와 함께 atrm 명령어를 사용하세요. 예를 들어 작업 7을 제거하려면 다음을 수행합니다.


$ atrm 7
$ atq
10 Thu Jul 29 12:19:00 2021 a tux
9  Tue Jul 27 03:30:00 2021 a tux 


예약된 작업에 실제로 무엇이 있는지 보려면 at spool을 봐야 합니다. 루트 사용자만 at spool을 볼 수 있으므로 sudo를 사용하여 스풀을 보거나 모든 작업의 ​​내용을 파악해야 합니다.


Schedule with Linux at 


at 시스템은 늦은 시간에 작업을 실행하는 것을 잊어버리지 않도록 하거나 자리를 비울 때 컴퓨터에서 작업을 실행하도록 하는 훌륭한 방법입니다. cron과 달리 작업이 지금부터 영구적으로 정기적인 일정에 따라 실행되어야 한다는 기대가 없으며 따라서 구문이 cron 구문보다 훨씬 간단합니다.


다음에 컴퓨터에서 기억하고 관리하기를 원하는 소규모 작업이 있을 때 at 명령어를 사용해 보세요.


https://opensource.com/article/21/8/linux-at-command

at