특정 날짜에 종료


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.