긴 프로세스를 실행하는 경우 일부 시간 기반 명령을 실행할 수 있는 방법이 있습니까?
예를 들어, 저는 실행하는 데 약 10분 정도 걸리는 매우 긴 프로세스를 실행하고 있습니다.
5분 후에 별도의 명령을 실행하고 싶습니다. 설명을 쉽게 하기 위해 개별 명령은 다음과 같습니다.echo 5 minutes complete
(참고: 명령의 완료 진행을 원하지 않고 지정된 간격 후에 명령을 실행하기만 합니다.)
가능합니까?
답변1
빨리 달려:
long-command & sleep 300; do-this-after-five-minutes
do-this-after-five-minutes
5분 후에 실행됩니다. 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!!!"
longprocess
in a를 실행 sub-shell
한 다음 이전에 생성된 "잠금" 파일이 존재하는지 모니터링합니다.
답변4
at
명령을 사용하는 다른 방법을 언급하십시오 .
play
다음과 같은 명령을 통해 notify-send
보다 명확하고 사용자 친화적인 알림을 받는 데 사용할 수 있습니다 .
- 메시지와 함께 알림 팝업 표시
- 소리 재생
# schedule notification
echo "notify-send 'Wake up!' && play ~/Music/alarm.wav" | at "now + 5 minute"
노트:이 at
명령은 선택적으로 스크립트 파일을 실행할 수 있습니다. 더 많은 기능을 보려면 매뉴얼 페이지를 참조하세요.
이러한 패키지는 기본적으로 배포판에서 사용 가능하지 않을 수 있으므로 수동으로 설치해야 할 수도 있습니다.