일정 기간 동안 프로그램(bash 스크립트)을 일시 중지합니다.

일정 기간 동안 프로그램(bash 스크립트)을 일시 중지합니다.

특정 bash 스크립트를 30분 동안 일시 중지하고 싶습니다. 이제 를 사용 sleep 1800하지만 랩톱이 일시 중지(절전) 상태에 있을 수 있는 시간을 고려하지 않습니다. 이것을 달성할 수 있는 방법이 있나요?

지금이 오후 12시 53분이라면 오전 1시 23분에 프로그램을 재개하고 싶습니다. 그러나 동시에 컴퓨터가 절전 모드일 수도 있습니다. 컴퓨터가 오전 1시 23분 이후까지 최대 절전 모드에 있는 경우 최대 절전 모드에서 다시 시작한 후 즉시 프로그램을 다시 시작하고 싶습니다.

답변1

어쩌면 루프로 감싸서 while예정된 시간에 있는지 테스트할 수도 있습니다.

#!/bin/bash                                 

SOON=$(($(date +%s) + 1800))                                   
while [[ "$NOW" -le "$SOON" ]]; do                         
    sleep 1                            
    NOW=$(date +%s)                                     
done         

날짜 아이디어는 다음에서도 찾을 수 있습니다.Chepner의 답변. 이 명령은 1970년 이후 날짜를 초 단위로 +%s형식화합니다 date. $(( ))초 연산을 추가하기만 하면 됩니다. 1800을 임의의 숫자로 바꾸십시오. (작동하는지 확인하기 위해 소량으로 테스트하는 것이 가장 좋습니다.) sleep 1스크립트가 매초마다 조건을 확인하도록 합니다.

관련 정보