처음으로 바쁜 서버를 관리하게 되었을 때, 사용자들이 서버를 이용하지 않는 적절한 시간에 재부팅해야 하는 상황이 있었습니다. 그 시간은 새벽 3시경이었습니다. 그때 이런 생각이 들었습니다. "이건 정말 불편하다, 서버를 재부팅하려고 터무니없는 시간에 일어나야 한다니." 하지만 5초 후에 그 생각이 얼마나 어리석은지 깨달았습니다. "이건 리눅스잖아, 이렇게 간단한 작업을 자동화하는 건 어렵지 않을 텐데." 그렇게 at 유틸리티를 알게 되었습니다.
이 유틸리티는 사용법이 매우 간단합니다. 시간과 날짜를 명령줄 인자로 전달한 다음, 실행하고 싶은 명령어를 하나 이상 입력하기만 하면 됩니다.
서버에서는 관리자 없이 자동으로 작업을 수행해야 하는 경우가 많기 때문에 이런 프로그램이 특히 유용합니다. 하지만 데스크톱 환경에서도 at은 매우 편리한 도구가 될 수 있습니다. 예를 들어, 대용량 파일을 다운로드하는 경우 늦은 밤에 PC가 자동으로 종료되도록 예약할 수 있습니다. 또한 at을 활용해 해야 할 일을 상기시켜 주는 알림을 설정할 수도 있습니다. 적절한 도구와 명령줄 옵션만 있다면 생각할 수 있는 거의 모든 작업을 예약할 수 있습니다.
다양한 리눅스 배포판에 'at' 설치하기
Debian 또는 Debian 기반 배포판에서는 다음 명령어를 실행합니다:
sudo apt install at
Fedora에서는 다음을 실행합니다:
sudo dnf install at
Arch Linux에 'at'을 설치하려면:
sudo pacman -S at
openSUSE에서는 다음을 사용합니다:
sudo zypper install at
'at' 데몬 자동 시작 활성화 및 서비스 실행
일부 배포판은 부팅 시 'at' 데몬(atd)이 자동으로 시작되도록 설정되어 있지만, 그렇지 않은 경우도 있습니다. 다음 명령어로 확인해 보세요:
systemctl is-enabled atd.service
결과가 "disabled"로 표시되면 다음 명령어로 활성화합니다:
sudo systemctl enable atd.service
그리고 데몬을 시작합니다:
sudo systemctl start atd.service
'at' 명령어 예약을 위한 날짜 및 시간 지정 방법
다음 형식 중 하나를 자유롭게 사용할 수 있습니다.
1. 지정한 분, 시간, 일 또는 주 후에 명령 실행
at now + 10 minutes at now + 10 hours at now + 10 days at now + 10 weeks
2. 정확한 시간에 실행
at 23:10
현재 시간이 12:00인 상태에서 다음을 실행하면:
at 11:00
명령은 다음 날 지정된 시간에 실행됩니다.
3. 정확한 시간과 날짜에 실행
at 12:00 December 31
시간과 날짜를 지정하는 다양한 방법은 온라인 'at' 매뉴얼에서 확인할 수 있습니다.
'at' 명령어 사용 방법
눈치채셨을 수도 있지만, 예약 시간을 지정하면 아래 이미지와 같은 프롬프트가 나타납니다:
여기서 실행하고자 하는 명령어를 입력하면 됩니다. 입력된 명령은 현재 사용자 계정으로 실행됩니다. 지정된 시간에 실행할 명령어를 입력한 후 Enter 키를 누르세요. 추가 명령을 실행하려면 같은 절차를 반복하면 됩니다. 모든 입력이 끝나면 Ctrl + D를 누릅니다. 이 키 조합을 누르면 <EOT>가 표시되고, 그 아래에 명령이 실행될 시간이 함께 출력됩니다.
루트 권한이 필요한 명령을 예약하려면 sudo를 사용하지 마세요. 예약된 명령은 무인 상태로 실행되기 때문에 비밀번호를 입력할 사람이 없어 sudo가 정상적으로 작동하지 않습니다. 대신 먼저 루트 사용자로 로그인하세요:
sudo -i
그런 다음 'at' 명령을 평소처럼 사용하면 됩니다. 이제 모든 명령이 일반 사용자가 아닌 루트 권한으로 실행됩니다.
명령 예약이 완료되면 다음을 입력합니다:
exit
이렇게 하면 루트 사용자 계정에서 로그아웃됩니다.
위 스크린샷의 예시에서는 2분 후에 시스템 종료가 예약되었습니다. 이를 자신의 필요에 맞게 응용할 수 있습니다.
예약된 작업이 실행되기 전에 컴퓨터 전원이 꺼진 경우, 시간이 지났다면 다음 부팅 시 자동으로 실행됩니다. 예를 들어, 오후 3시에 작업을 예약하고 오후 2시에 종료한 뒤 오후 4시에 전원을 켜면, 해당 작업은 오후 4시에 실행됩니다.
예약된 작업 조회 및 삭제하기
대기 중인 작업 목록은 다음 명령어로 확인할 수 있습니다:
atq
또는
at -l
특정 작업에 예약된 명령 내용을 보려면 해당 작업의 번호를 사용합니다:
at -c 22
출력 결과의 마지막 줄에서 예약한 명령을 확인할 수 있습니다.
작업을 삭제하려면 다음과 같이 작업 번호를 지정합니다:
atrm 22
'at'으로 그래픽 애플리케이션 실행 예약하기
먼저 현재 디스플레이 변수 값을 확인합니다:
echo $DISPLAY
일반적으로 :0으로 설정되어 있습니다.
이제 at으로 실행을 예약합니다. 'at' 프롬프트에서 DISPLAY 변수를 앞서 확인한 값으로 설정(export DISPLAY=:0)한 후, 원하는 그래픽 애플리케이션을 실행하는 명령을 입력합니다.
위 스크린샷에서 사용된 명령을 실행하면 다음과 같은 결과를 얻을 수 있습니다.
이제 그래픽 애플리케이션이 화면에 바로 나타나 휴대폰 알람보다 더 확실하게 중요한 일정을 상기시켜 줄 것입니다.
결론
'at' 사용법 자체는 매우 쉽습니다. 오히려 더 어려운 부분은 원하는 작업을 수행하기 위한 창의적인 활용법을 찾는 것입니다. 다운로드 시작, 프로그램 종료, 컴퓨터 절전 모드 전환 등 생각하는 거의 모든 작업을 자동으로 예약하고 실행할 수 있습니다.