Bash 스크립트 - Bash 스크립트의 출력을 파일로 어떻게 리디렉션합니까?

Bash 스크립트 - Bash 스크립트의 출력을 파일로 어떻게 리디렉션합니까?

그래서 메모리 사용량, 스위치, 스레드 등을 보여주는 기본 파일이 있고 그 결과를 로그 파일, 즉 텍스트 파일로 인쇄하고 싶습니다. 현재 "./file.sh 1 1"을 입력하여 명령을 실행하는 반면 첫 번째 인수는 명령을 실행할 루프 수를 결정하고 두 번째 인수는 휴면 시간을 결정합니다. 기본적으로 모든 명령을 실행하는 동안 반복됩니다.

추적을 위해 결과를 로그 파일로 내보내고 싶습니다. 결국 제 목표는 이 작업을 24시간 동안 실행하고 모든 결과를 기록하는 것입니다.

기본적으로 이 모든 것이 로그 파일로 이동하길 원합니다. > log.txt 또는 >> log.txt를 추가하면 원하는 대로 로그 파일에 인쇄됩니다. 하지만 터미널에는 표시되지 않습니다.

    echo "Threads:"
        grep -s '^Threads' /proc/[0-9]*/status | awk '{ sum += $2; } END { print sum; }' > log.txt
        echo""
        echo "Free memory:"
        grep MemFree /proc/meminfo > log.txt
        echo ""
        echo "Firefox usage"
        pidstat -C firefox -w -u > log.txt
        echo ""

답변1

파일에 기록하고 stdout으로 출력하려면 다음을 시도해 보십시오 tee.

    echo "Threads:"
    grep -s '^Threads' /proc/[0-9]*/status | awk '{ sum += $2; } END { print sum; }' | tee -a log.txt
    echo""
    echo "Free memory:"
    grep MemFree /proc/meminfo | tee -a log.txt
    echo ""
    echo "Firefox usage"
    pidstat -C firefox -w -u | tee -a log.txt
    echo ""

모든 내용을 로그 파일로 전송하려면 다음을 대신 사용할 수 있습니다.

(
    echo "Threads:"
    grep -s '^Threads' /proc/[0-9]*/status | awk '{ sum += $2; } END { print sum; }'
    echo""
    echo "Free memory:"
    grep MemFree /proc/meminfo
    echo ""
    echo "Firefox usage"
    pidstat -C firefox -w -u
    echo ""
) | tee -a log.txt

관련 정보