특정 날짜에 휴무

특정 날짜에 휴무

특정 시간에 종료를 예약할 수 있다는 것을 알고 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 epoch 이후 예정된 시간을 초로 변환하고, 차이를 계산하고, 분으로 변환한 다음 이를 종료 지연으로 사용하는 방식으로 작동합니다. 예정된 시간이 지나면 정상적으로 작동하지 않습니다.

답변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

관련 정보