유닉스 : 지정된 시간까지 수면


12

명령 행에 지정된 시간까지 휴면 상태가되는 (반) 표준 Unix 명령이 있습니까? 다시 말해, 나는 sleep지속 시간보다 깨우는 시간이 걸리는 것과 비슷한 것을 찾고있다 .

예를 들면 다음과 같습니다. sleeptill 05:00:00

무언가를 코딩 할 수는 있지만 이미 무언가가 있다면 바퀴를 다시 발명하지 않을 것입니다.

보너스 질문 : 시간대를 사용할 수 있다면 좋을 것입니다 (에서와 같이 sleeptill 05:00:00 America/New_York).

편집 내가하는 일의 특성으로 인해 "T에서 명령 실행"솔루션 대신 "T까지 잠자기"를 찾고 있습니다.

편집 나는 18:00의 명령을 실행하고 17:00 일어나 그것을 말한다면 의심의 소지를 없애기 위해는, 내가, 일광 절약 시간으로 할 필요 일부 코너의 경우 23 시간 동안 잠을 기대 (또는 22 시간 또는 24 시간 동안.)


당신은 사용할 수 있다고 cron생각합니다.
— Bobby

고마워하지만 의도 된 용도로는 실제로 비슷해야합니다 sleep.
— NPE

답변:


18

알맞은 날짜 명령이 있고 bash를 사용하는 Unix를 사용하는 경우 시간 계산에 % s 형식을 사용할 수 있습니다.

sleep $(( $(date -j 1700 +%s) - $(date +%s) ))

(1700은 오후 5시이며 -j는 날짜를 실제로 설정하지 말라고 알려줍니다)


제안에 대한 (+1). 18:00에 명령을 실행하고 17:00에 깨우도록 명령하면 23 시간 동안 (또는 일부 경우에는 일광 절약 시간과 관련하여 22 또는 24 시간 동안) 잠이들 것으로 예상됩니다. 이것은 불행히도 제안이 무너지는 곳입니다. [또한 Linux 시스템에서 실행되도록 변경해야 -j했습니다 -d.]
— NPE

7
@aix : Linux (및 GNU 날짜가있는 다른 시스템)에서는와 같은 정교한 날짜 사양을 사용할 수 있습니다 date -d 'tomorrow 17:00'.
— Gilles 'SO- 악의를 멈춰라'

3
@NPE, BTW, 하나는 알림 분할을 사용하여 보정 할 수 있습니다 echo $(( ($(date -d "3:00" +%s) - $(date +%s) + (60*60*24)) % (60*60*24) ))(일부 DST-변경 주위에 문제가있을 수 있습니다)
— HVR

13

이것은 어떻습니까 (w00t와 Gille의 아이디어를 기능으로 결합)?

function sleep_until {
  seconds=$(( $(date -d "$*" +%s) - $(date +%s) )) # Use $* to eliminate need for quotes
  echo "Sleeping for $seconds seconds"
  sleep $seconds
}

용법:

sleep_until 8:24
Sleeping for 35 seconds

sleep_until '23:00'
Sleeping for 52489 seconds

sleep_until 'tomorrow 1:00'
Sleeping for 59682 seconds

9

linux / unix at명령을 확인하십시오 . 5AM 예제 사용 :

at 05:00 some_command

또한 시간대를 지원합니다.

GMT, UCT 또는 ZULU (대소 문자 구분)의 시간대 이름은 시간이 협정 세계시로 지정되도록 따를 수 있습니다. 다른 시간대는 TZ 환경 변수를 사용하여 지정할 수 있습니다.


제안에 대한 (+1). 불행히도 내 워크 플로에 자연스럽게 맞지 않습니다. 순서대로 많은 것을 실행하는 스크립트가 있으며 특정 단계가 특정 시간까지 시작되지 않도록하고 싶습니다. 물론이 캔은 사용 무언가로 변환 cron하거나 at,하지만 관리 할 수있는 고통 일 것이다. 이것이 내가 뭔가를 찾고있는 이유 sleep입니다. 지금은 내가 직접 작성했습니다.
— NPE

아, 그래서 당신은 차단 일정을 원합니다. 프로세스의 각 단계를 추적하는 상태 파일이없는 이유는 무엇입니까?
— Jeremy L

할 수는 있지만 필요한 것보다 다소 복잡하게 들립니다. 단계는 별도의 명령이며 셸 스크립트는 워크 플로를 조정합니다. 스크립트에서 "오후 5 시까 지 자"는 것이 정말 필요한 전부입니다.
— NPE

이 경우 w00t의 대답은 정확하게 당신이 추구하는 것일 수 있습니다.
— Jeremy L

그렇습니다. 그것은 올바른 정신에 있습니다. 슬프게도, 그것은 (나에게) 중요한 경우에 고장이 나고 시간대를하지 않습니다.
— NPE
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.