![추가 출력 생성이 중단되면 프로세스를 종료합니다.](https://linux55.com/image/16872/%EC%B6%94%EA%B0%80%20%EC%B6%9C%EB%A0%A5%20%EC%83%9D%EC%84%B1%EC%9D%B4%20%EC%A4%91%EB%8B%A8%EB%90%98%EB%A9%B4%20%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EB%A5%BC%20%EC%A2%85%EB%A3%8C%ED%95%A9%EB%8B%88%EB%8B%A4..png)
하위 프로세스가 여전히 출력을 생성하고 있는지 감지하고, 그렇지 않으면 지정된 시간 초과 후에 종료할 수 있는 셸 도구가 있습니까?
백업용으로 Gmail을 사용 offlineimap
하지만 매우 불안정합니다. IMAP 조건이나 기타 이유로 인해 주기적으로 처리가 중지됩니다. 진행 상황을 확인하려면 프로세스를 지속적으로 다시 시작해야 합니다. 따라서 내가 현재 사용하고 있는 이유는 다음과 같습니다.
(ulimit -t 300 ; offlineimap)
유통 중. 관계없이 5분마다 도구를 다시 시작하십시오.
이는 실제로 일부 작업을 수행하고 있을 때 프로세스를 조기에 종료하거나 프로세스가 이미 차단된 상태에서 4분을 기다리기 때문에 다소 만족스럽지 않습니다. 나는 다음과 같은 것을 갖고 싶습니다.
offlineimap > output.log &
stillmakingoutput? --timeout 60 output.log || kill $!
사용자 정의 실행/모니터링 스크립트를 사용하면 가능할 수도 있지만 이 상황에 대한 일반적인 접근 방식은 없나요?
답변1
따라서 프로세스가 여전히 작동하는지 확인하기 위해 로그 파일 크기를 확인하는 "작은" 시간 초과 스크립트를 사용하여 작동했습니다. 예쁘지는 않지만 도움이 됩니다.
#!/bin/sh
TIMEOUT=$1
FILE=$2
PID=$3
if [ -z "$PID" ]
then
echo $0 timeout file pid
echo " e.g. 60 /tmp/log 16325"
exit
fi
echo "stalekill: timeout=$TIMEOUT file=$FILE pid=$PID"
sleep 1
SIZE=0
while true
do
sleep 3
NEWSIZE=$(stat -c%s "$FILE")
if [ "$NEWSIZE" -eq "$SIZE" ]
then
echo "stalekill '$FILE' unchanged; $SIZE"
sleep $TIMEOUT
NEWSIZE=$(stat -c%s "$FILE")
if [ "$NEWSIZE" -eq "$SIZE" ]
then
kill $PID || sleep 2 && kill -9 $PID
exit
fi
echo "stalekill '$FILE' changed; $SIZE..$NEWSIZE"
else
echo "stalekill '$FILE' changed; $SIZE..$NEWSIZE"
fi
SIZE=$NEWSIZE
done
호출 방법은 다음과 같습니다(루프).
./offlineimap.py >> ./log.txt 2>&1 & stalekill 25 ./log.txt $!
타이밍이 너무 기술적이지는 않으며 프로세스가 스스로 종료되었는지 확인하는 것도 좋지만 기본적으로 작업을 수행합니다.
그러나 그럼에도 불구하고 누군가 이 작업에 대해 다르거나 더 표준화된 솔루션을 알고 있는 경우: accepted answer tick still available
.
답변2
시도 해봐http://pyropus.ca/software/getmail/. 각 IMAP 계정에 대해 시간 제한을 설정할 수 있습니다.
답변3
한 번 살펴보고 싶을 수도 있습니다감시 장치이는 귀하의 요구에 적합할 수 있습니다.