
명령줄에 지정된 시간까지 절전 모드로 전환되는 (반)표준 Unix 명령이 있습니까? 즉, sleep
지속 시간이 아닌 깨우기 시간이 걸리는 것과 유사한 것을 찾고 있습니다.
예를 들어:sleeptill 05:00:00
나는 뭔가를 코딩할 수 있지만 이미 뭔가가 있다면 바퀴를 다시 발명하지 않을 것입니다.
보너스 질문: 시간대를 사용할 수 있다면 좋을 것입니다( 에서와 같이 sleeptill 05:00:00 America/New_York
).
편집하다내가 하고 있는 일의 특성상 "T에서 명령 실행" 솔루션보다는 "T까지 절전 모드" 솔루션을 찾고 있습니다.
편집하다의심의 여지를 피하기 위해 18:00에 명령을 실행하고 17:00에 깨어나도록 지시하면 23시간 동안 잠자기 상태가 될 것으로 예상합니다(또는 일광 절약 시간제와 관련된 일부 특수한 경우에는 22시간 또는 24시간.)
답변1
적절한 날짜 명령이 있고 bash를 사용하는 Unix를 사용하고 있다면 %s
시간 계산에 이 형식을 사용할 수 있습니다.
sleep $(( $(date -j 1700 +%s) - $(date +%s) ))
1700
오후 5시.-j
실제로 날짜를 설정하지 않도록 날짜를 알려줍니다.
답변2
이것은 어떻습니까(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
답변3
리눅스/유닉스를 확인해보세요at
명령. 오전 5시 예를 사용하면 다음과 같습니다.
at 05:00 some_command
시간대도 지원합니다.
GMT, UCT 또는 ZULU(대소문자 구분 안 함)의 시간대 이름을 사용하여 시간이 협정 세계시(Coordinated Universal Time)임을 지정할 수 있습니다. TZ 환경 변수를 사용하여 다른 시간대를 지정할 수 있습니다.