스크립트를 실행할 때 테일 로그에 기능을 추가하시겠습니까?

스크립트를 실행할 때 테일 로그에 기능을 추가하시겠습니까?

나는 매우 짧은 대본을 가지고 있습니다.

    loading_animation &
    LOADING_ANIMATION=$!
    trap "kill -9 $LOADING_ANIMATION" `seq 0 15`
    task_to_be_performed
    echo "Script Complete"

스크립트는 이것보다 조금 길지만 잘 요약되어 있습니다.

스크립트가 실행되는 동안(애니메이션이 표시되는 중) [L] 키를 누르면 애니메이션이 중지되고 task_to_be_performed가 완료될 때까지 로그 표시가 시작되도록 기능을 추가하는 방법이 있습니까?

기본적으로 [L]을 누르면 tail -f /var/log/messagestask_to_be_performed가 완료될 때 애니메이션이 중지, 시작 및 중지되도록 한 다음 "스크립트 완료"를 에코하고 스크립트를 완전히 종료합니다.

난 이해가 안 돼요.

답변1

#! /bin/bash
loading_animation &
ani_pid=$!
trap "kill -9 $ani_pid" 0
trap 'done=yes' USR1
output=ani
( task_to_be_performed; kill -USR1 $$) &
while true; do
    read -s -n 1 -t 1 input
    if [ ani = "$output" ] && [ l = "$input" ]; then
        output=log
        kill "$ani_pid"
        tail -f /var/log/messages &
        tail_pid=$!
        trap "kill -9 $tail_pid" 0
    fi
    if [ "$done" = yes ]; then
        kill -9 $tail_pid
        break
    fi
done
echo "Script Complete"

관련 정보