
나는 를 통해 특정 시간 동안 종료를 예약할 수 shutdown -h 21:45
있으며 반복적인 특성 때문에 그러한 작업에 crontab을 사용해서는 안 된다는 것을 알고 있습니다. 특정 서비스에 대한 종료를 예약하려면 어떻게 해야 합니까?날짜8월 31일 오후 20시처럼요?
답변1
이 at
명령은 향후 실행을 일회성으로 예약하기 위한 것입니다.
예를 들어
% at 8pm Aug 31
at> echo hello
at> <EOT>
job 161 at Sat Aug 31 20:00:00 2019
("<EOT>"는 Ctrl-D를 눌러 생성되었습니다)
% atq
161 Sat Aug 31 20:00:00 2019 a sweh
여기에 명령을 입력할 수 있습니다 shutdown
.
답변2
이 작업을 수행하는 확실한 방법은 있지만 at
종료 후에도 살아남을 것이라고 생각하므로 예정된 종료 전에 시스템이 재부팅되면 예정된 시간에 다시 종료될 수 있습니다. 따라서 bash와 GNU 날짜를 사용하면 지연된 종료를 사용할 수 있습니다.
/sbin/shutdown +$(( ( $( date -d "30 may 2019 13:15" +%s ) - $( date +%s ) ) / 60 + 1 ))
주의: 이는 1분까지만 정확합니다. 이는 예정된 시간을 UNIX 시대 이후의 초로 변환하고 차이를 계산하여 분으로 변환한 다음 이를 종료 지연 시간으로 사용하는 방식으로 작동합니다. 예정된 시간이 과거이면 제대로 작동하지 않습니다.
답변3
최신 Ubuntu 버전에서는 systemd를 사용하고 일회성 명령에 대한 기존 atd
및 관련 스케줄러가 설치되지 않았거나 실행되지 않는 경우at
일회성 명령을 예약할 수 있습니다.systemd-run
수동으로 생성하는 것보다 다소 쉽습니다.systemd timer
:
systemd-run --on-calendar="2019-08-31 20:00:00 CET" /sbin/shutdown now
답변4
올해에만 작업을 실행하려면 다음 안내를 따르세요.
0 20 31 8 * test $(/bin/date +\%Y) = "2019" && /sbin/shutdown now
매년 작업을 실행하려면 다음 안내를 따르세요.
0 20 31 8 * /sbin/shutdown now