터미널에서 특정 날짜 시간에 Linux를 종료하는 방법은 무엇입니까?


46

sudo shutdown시간 또는 분을 지정 하여 사용 을 종료 할 수있는 것 같습니다 .

종료 날짜 시간을 지정하는 방법이 있습니까?

답변:


77

당신은 직접이 작업을 수행 할 수 있습니다 shutdown command참조 man shutdown:

SYNOPSIS
   /sbin/shutdown [-akrhPHfFnc] [-t sec] time [warning message]

[...]

   time   When to shutdown.

예를 들어,

shutdown -h 21:45

shutdown -h21:45에 실행 됩니다.


이 기능을 제공하지 않는 명령의 경우 다음 중 하나를 시도 할 수 있습니다.

A. at 사용

at데몬은 바로이 설계되었습니다. OS에 따라 설치해야 할 수도 있습니다. 데비안 기반 시스템에서 다음을 수행 할 수 있습니다.

sudo apt-get install at

다음과 같은 명령을 내리는 세 가지 방법이 있습니다 at.

  1. 그것을 파이프 :

    $ echo "ls > a.txt" | at now + 1 min
    warning: commands will be executed using /bin/sh
    job 3 at Thu Apr  4 20:16:00 2013
    
  2. 실행할 명령을 텍스트 파일로 저장 한 다음 해당 파일을 다음으로 전달하십시오 at.

    $ echo "ls > a.txt" > cmd.txt
    $ at now + 1 min < cmd.txt
    warning: commands will be executed using /bin/sh
    job 3 at Thu Apr  4 20:16:00 2013
    
  3. atSTDIN에서 명령을 전달할 수도 있습니다 .

    $ at now + 1 min
    warning: commands will be executed using /bin/sh
    at> ls
    

    그런 다음을 눌러 쉘 CtrlD을 종료하십시오 at. ls명령은 1 분 실행됩니다.

의 형식으로 매우 정확한 시간을 제공 할 수 있습니다 [[CC]YY]MMDDhhmm[.ss].

$ at -t 201403142134.12 < script.sh

script.sh2014 년 3 월 14 일 21:34 및 12 초에 스크립트가 실행됩니다 .

B. cron 사용 (종료에는 좋지 않은 아이디어 임)

다른 방법은 cron특정 시간에 작업을 수행하도록 설계된 스케줄러를 사용하는 것 입니다. 일반적으로 반복되는 작업에 사용되지만 특정 시간을 제공 할 수도 있습니다. 각 사용자는 실행되는 작업과시기를 제어하는 ​​자체 "크론 탭"을 가지고 있습니다. crontab의 일반적인 형식은 다음과 같습니다.

*     *     *     *     *  command to be executed
-     -     -     -     -
|     |     |     |     |
|     |     |     |     +----- day of week (0 - 6) (Sunday=0)
|     |     |     +------- month (1 - 12)
|     |     +--------- day of month (1 - 31)
|     +----------- hour (0 - 23)
+------------- min (0 - 59)

예를 들어 ls매일 14:04에 실행 됩니다.

04 14 * * * ls

특정 날짜에 대한 크론 작업을 설정하려면 다음을 수행하십시오.

  1. 을 실행하여 새 크론 탭을 만듭니다 crontab -e. 즐겨 찾는 텍스트 편집기 창이 나타납니다.

  2. 이 파일을 방금 연 파일에 추가하십시오. 이 특정 예제는 해당 날짜가 금요일 인 경우 2014 년 3 월 15 일 14:34에 실행됩니다 (그래서 두 번 이상 실행될 수 있음).

    34 14 15 5  /path/to/command        
    
  3. 파일을 저장하고 편집기를 종료하십시오.

SO 답변은 한 번만 실행할 수있는 방법을 제안하지만 결코 사용하지 않으므로 보증 할 수 없습니다.


2
cron으로 종료 일정을 잡는 것은 정말 나쁜 습관입니다. 갑자기 월요일 아침마다 서버가 다운되는 이유가 궁금합니다.
Ouki

4
@Ouki 미안하지만 종료에 cron을 사용하는 것이 좋습니다. 나는 괄호 안에 그것이 가능하지만 언급하지 않는다고 언급했다. 우리는 여기에 포괄적 인 답변을 좋아하는 경향이 있으므로 다른 대안을 제공하는 동시에 다른 대안을 제시해야합니다 shutdown. 나는 그 나쁜 경험에 대해 느꼈다. 그것은 즐거울 수 없었다.
terdon

2
이것은 shutdown일정 을 혼합 cron하고 같은 대답 으로 제안 할 때 제안에 관한 것입니다 ... 워크 스테이션이든 1000 사용자 메일 서버 (나의 슬픈 경험)는 나쁜 습관의 결과에 관한 것입니다.
Ouki

3
나는 여기 오우 키와 함께있다. 논의 할 때 shutdown포함하지 않아야합니다 cron. (특히 그것이 끔찍한 생각인지 모르는 사람과의 대화).
Ricky Beam

2
이 답변이 질문에 의해 이미 가정 된 정보로 이어질 것 같습니다. OP가 종료 시간을 지정하는 방법을 알고 있지만 날짜와 시간을 모두 지정하는 방법을 알고 싶어하는 것 같습니다. 그것은이 답변에서 다뤄지지 만, 그것이 처음에 요청되었을 때 추가 정보 인 것처럼 제공됩니다.
Weeble

24

shutdown 명령에 날짜를 지정할 수 없지만 두 가지 대안이 있습니다.

1) 가장 쉬운 방법은 at 명령 을 사용 하는 것 입니다. 다음 예제는 shutdown +5특정 시간과 요일에 실행 됩니다.

echo "shutdown +5" | at 10:05am 2019-01-19

2) 계산기 사용에 신경 쓰지 않고 24 시간 (24 * 60 = 1440 분)으로 종료하려는 경우 시스템이 다음 사이에 재부팅되지 않아야합니다.

shutdown -r +1440

2
위의 답변이 위에있는 이유 : terdon의 답변이 정확하고 매우 포괄적이지만 지나치게 수다
스럽

2
수다에 의해 당신이 도움이되고 포괄적 인 것을 의미한다면 ... 당신의 대답은 at명령을 설명조차하지 못했습니다 .
Anthony

@Anthony 나는이 사용 방법에 at대한 설명이 필요 없다고 생각합니다 . 나는 당신이 다르게 믿는 것을 볼 수 있습니다. 다른 마음, 다른 견해.
ndemou

이 답변은 더 이상 사실이 아닙니다. van Smoorenburg, Upstart 및 systemd shutdown명령은 날짜 지정을 허용하지 않습니다. 그러나 nosh 툴셋 shutdown은 오랜 BSD 구문을 지원합니다.
JdeBP

@ JdeBP : 두 가지 대안 중 더 이상 사실이 아니라고 생각하고 테스트하지 않았습니까? 방금 3 시스템 (Ubuntu 18.04,16.04 및 CentOS 7)에서 두 명령을 모두 테스트했으며 정상적으로 작동했습니다. 귀하의 의견의 나머지 부분 ( "van Smoorenburg ...")과 관련하여,이 답변이 더 이상 사실이 아니거나 일반적인 의견이 아니라는 귀하의 진술이 명확하다는 것이 확실하지 않습니다. 좀 더 자세한 정보가 담긴 답변을 게시해야 할 수도 있습니다.
ndemou

6

12:00시에 시스템을 종료합니다 :

$ sudo shutdown -h 12:00

옵션 :

-h, -P, --poweroff

기기의 전원을 끕니다.

-r, --reboot

머신을 재부팅하십시오.

-c

보류중인 종료를 취소하십시오.


5
특정 날짜에 종료하는 방법을 보여주지 않는 방법 ...
Askar
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.