일정 시간이 지난 후 명령을 실행하시겠습니까?

일정 시간이 지난 후 명령을 실행하시겠습니까?

긴 프로세스를 실행하는 경우 일부 시간 기반 명령을 실행할 수 있는 방법이 있습니까?

예를 들어, 저는 실행하는 데 약 10분 정도 걸리는 매우 긴 프로세스를 실행하고 있습니다.

5분 후에 별도의 명령을 실행하고 싶습니다. 설명을 쉽게 하기 위해 개별 명령은 다음과 같습니다.echo 5 minutes complete

(참고: 명령의 완료 진행을 원하지 않고 지정된 간격 후에 명령을 실행하기만 합니다.)

가능합니까?

답변1

빨리 달려:

long-command & sleep 300; do-this-after-five-minutes

do-this-after-five-minutes5분 후에 실행됩니다. long-command백그라운드에서 실행 됩니다 .

답변2

이 작업을 수행할 수 있는 라이너가 있습니다.

( ( sleep $TIMEOUT ; echo "5 minutes complete") & $COMMAND )

귀하의 경우 TIMEOUT=5m이고 COMMAND는 긴 명령입니다.

이 게시물에 대한 내 답변도 참조하세요."서비스 네트워크 다시 시작" 시간 초과

답변3

다음 스크립트를 사용할 수 있습니다.

#!/bin/bash

TEMPFILE="$(mktemp)"
STARTTIME="$(date +%s)"
(./longprocess; rm -f "$TEMPFILE") &
while [ -f "$TEMPFILE" ]; do
    sleep 1s
    NOW="$(date +%s)"
    if (( (NOW-STARTTIME) % 300 == 0 )); then
        echo "$(( (NOW-STARTTIME)/60 )) minute(s) elapsed"
    fi
done
echo "Done!!!"

longprocessin a를 실행 sub-shell한 다음 이전에 생성된 "잠금" 파일이 존재하는지 모니터링합니다.

답변4

at명령을 사용하는 다른 방법을 언급하십시오 .

play다음과 같은 명령을 통해 notify-send보다 명확하고 사용자 친화적인 알림을 받는 데 사용할 수 있습니다 .

  • 메시지와 함께 알림 팝업 표시
  • 소리 재생
# schedule notification
echo "notify-send 'Wake up!' && play ~/Music/alarm.wav" | at "now + 5 minute"

다음과 같습니다.
여기에 이미지 설명을 입력하세요.


노트:at명령은 선택적으로 스크립트 파일을 실행할 수 있습니다. 더 많은 기능을 보려면 매뉴얼 페이지를 참조하세요.
이러한 패키지는 기본적으로 배포판에서 사용 가능하지 않을 수 있으므로 수동으로 설치해야 할 수도 있습니다.

관련 정보