루프에서 특정 파일을 삭제하는 쉘 스크립트를 만드는 방법

루프에서 특정 파일을 삭제하는 쉘 스크립트를 만드는 방법

실제로 저는 애플리케이션에서 5초마다 지속적으로 생성되는 특정 파일/폴더를 실행하고 지속적으로 삭제해야 하는 쉘 스크립트를 만들 계획입니다.

[아래에 사용된 데이터는 더미이므로 이해하기 쉬우며 일반적으로 다른 사람들에게도 도움이 될 수 있습니다.]

대상 애플리케이션 패키지 이름- com.example.mypackage

대상 애플리케이션 실행 활동 이름- com.activity.launcher

대상 앱에서 삭제할 파일- /sdcard/Android/data/app/log1 , /sdcard/Android/data/app/log2

간격 삭제: 5초에 한 번씩

트리거 포인트 시작:쉘 스크립트를 실행한 후에만

:제거 루프 프로세스는 대상 애플리케이션이 더 이상 활성화되지 않은 후에 자동으로 종료되어야 합니다(따라서 위에 언급된 활동 이름).

답변1

다음은 제가 생각해낸 짧은 bash 스크립트입니다. logger\.shgrep 문을 모니터링하려는 프로세스 이름으로 바꿔야 합니다 . 이 경우 "logger.sh"라는 프로세스를 확인하고 PID를 가져옵니다.

#!/bin/bash

pid=$(ps aux | grep "logger\.sh" | head -n 1 |  awk '{print $2}');

if [ "$pid" != "" ] 
    then
    pidFound=1;
    while [ "$pidFound" = 1 ]
    do
        rm /sdcard/Android/data/app/log1;
        rm /sdcard/Android/data/app/log2;
        sleep 5;
        pid=$(ps aux | grep "logger\.sh" | head -n 1 |  awk '{print $2}');
        if [ "$pid" != "" ]; then
            pidFound=1;
        else
            pidFound=0;
            break
        fi
    done
fi

관련 정보