특정 날짜에 종료


11

특정 시간 동안 종료를 예약 할 수 shutdown -h 21:45있으며 반복적 인 특성으로 인해 이러한 작업에 crontab을 사용해서는 안된다는 것을 알고 있습니다. 8 월 31 일 오후 20:00과 같은 특정 날짜에 종료를 예약하려면 어떻게 해야합니까?

답변:


7

최신 Ubuntu 버전은 systemd를 사용하며 일회용 명령에 대한 기존 atd및 관련 at스케줄러가 설치되어 있지 않거나 실행되지 않는 경우 일회용 명령을 예약하여 다음systemd-run 을 수동으로 생성하는 것보다 다소 쉽습니다 systemd timer.

 systemd-run --on-calendar="2019-08-31 20:00:00 CET" /sbin/shutdown now

2
아이러니 한 점은이를 위해 전체 서비스를 시작하는 것이 거의 불필요한 것입니다. systemd의 종료 메커니즘 자체는 임의의 시점을 지원합니다. 명령 행 도구는 BSD의 명령 행과 동등하지 않기 때문에 액세스 할 수있는 기능을 제공하지 않습니다 shutdown. 다른 답변에서 썼 듯이, 당신이 이것을 원한다면 당신 shutdown은 집을 ​​돌아 다니는 것보다 수십 년의 구문으로 체계화 된 사람들이 도구를 더 유능 하게 만들도록 설득 할 수 systemd-run있습니다.
— JdeBP

캘린더 일정이 잘못되었습니다 : 2019-08-31 20:00:00 CET
— 업로드

12

이 at명령은 향후 실행을 예약합니다.

예 :

% at 8pm Aug 31
at> echo hello
at> <EOT>
job 161 at Sat Aug 31 20:00:00 2019

( "<EOT>"는 control-D를 눌러 생성했습니다)

% atq
161     Sat Aug 31 20:00:00 2019 a sweh

당신은 넣을 수 있습니다 shutdown여기에 명령을.


예! 내가 at게시 할 때 잊어 버렸습니다 - at회사에서는 일반적 으로 구성 관리 / 배포와 관련된 규칙에 따라 허용되는 방법이 at또는 cron일 수 있지만 분명히 의미 합니다.
— flow2k

정확히 동일하지는 않습니다. unix.stackexchange.com/q/465322/5132
— JdeBP

at파이프에서 명령을받을 수도 있습니다 echo "echo yup > $(tty)" | at now.
— mosvy

7

at이 작업을 수행하는 확실한 방법 이지만 시스템이 종료 된 후에도 계속 작동하므로 예약 된 시스템 종료 전에 시스템이 재부팅되면 예약 된 시간에 시스템이 다시 종료 될 수 있습니다. 따라서 bash와 GNU 날짜를 사용하면 지연 종료를 사용할 수 있습니다.

/sbin/shutdown +$(( ( $( date -d "30 may 2019 13:15" +%s ) - $( date +%s ) ) / 60 + 1 ))

주의 : 이것은 1 분까지 정확합니다. 예약 된 시간을 변환하고 UNIX 시대 이후 초로 변환하고 차이를 계산하고 분으로 변환 한 다음이를 종료 지연으로 사용합니다. 예약 된 시간이 지난 경우 제대로 작동하지 않습니다.


3

더 나은 shutdown명령을 사용하십시오 .

van Smoorenburg, Upstart 및 systemd shutdown명령은 날짜 지정을 허용하지 않습니다. 그러나 BSD shutdown명령은 종료 시점에 대한 형식으로 날짜 값을 사용합니다 yymmddhhmm. 이것은 4BSD 이후로 계속 적용되었으며 FreeBSD 및 OpenBSD에서도 마찬가지입니다. NetBSD는 그것을 확장했습니다 ccyymmddhhmm.

nosh 툴셋도 BSD에서 사용할 수 있기 때문에, shutdown명령에 동일한 기능을 부여 하여 CCYYMMDDHHMMNetBSD 에 따라 확장했습니다 . 또한 nosh 툴셋은 Linux에서도 사용할 수 있기 때문에 Linux는 종료 명령을 제공합니다.

물론 nosh와 함께 작동합니다 system-manager. 다른 시스템에서도 작동합니다. 그것은 프로세스 # 1에 신호를 보내서 물건을 제정하고 같은 신호를 같은 다른 시스템 관리자에 의해 이해 systemd합니다.

그것을 사용하거나 비슷한 도구를 사용할 수 있습니다. 또는 다른 리눅스 shutdown프로그램 의 제작자들 에게 BSD만큼 기능을 발휘할 수 있도록 도구를 확장 시키도록 설득 할 수 있습니다 shutdown.

추가 자료

  • Jonathan de Boyne Pollard (2018). shutdown. nosh 툴셋 매뉴얼 페이지. 소프트웨어.
  • Jonathan de Boyne Pollard (2018). system-manager. nosh 툴셋 매뉴얼 페이지. 소프트웨어.
  • shutdown. 시스템 관리자 설명서 . NetBSD 매뉴얼 페이지. 2011-11-04.
  • shutdown. FreeBSD 시스템 관리자 매뉴얼 . 2018-01-01.
  • shutdown. OpenBSD 매뉴얼 페이지. 2015-01-21.
  • /unix//a/465337/5132

1

올해 만 작업을 실행하려면 다음을 수행하십시오.

0 20 31 8 * test $(/bin/date +\%Y) = "2019" && /sbin/shutdown now

매년 작업을 실행하려면 다음을 수행하십시오.

0 20 31 8 * /sbin/shutdown now

-4

shutdown명령에 연도를 입력하는 옵션이있을 수 있지만 cron을 사용하여 특정 시점에서 명령을 한 번만 실행할 수 있습니다. 예를 들어보십시오.

0 0 31 8 ? 2019  shutdown

위의 내용은 표준 cron 구문이 아닙니다.


2
1. 오후 20:00이 아니라 자정이라고합니다. 2. 타이밍에 대해 SIX 필드가있는 cronjob을 본 적이 없습니다. 어떤 크론 구현을 참조하고 있습니까?
— 와일드 카드

2
일정에 year필드 가 없습니다crontab
— Seamus

나중에이 구문이 "표준 cron"이 아니라는 것을 깨달았으므로 액면가로 가져 가면 안된다는 데 동의합니다. OP는 cron 사용과 관련하여 성능 저하가 있음을 암시하는 것처럼 보이므로 대답에서는 명확하게하려고했습니다. 일회성 작업에 부적합하게 만드는 cron의 구현에 대해 본질적으로 비효율적이지는 않습니다. 이것도 당신의 생각입니까?
— flow2k
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.