주변 소리를 듣고 감지하는 Python 코드가 있습니다. 이것은 내 프로젝트가 아니며 온라인(SoPaRe)에서 찾았습니다. 해당 ./sopare.py -l
명령을 사용하면 사운드 녹음이 시작되지만 무한 반복됩니다. 중지하고 싶을 때는 을 눌러야 합니다 Ctrl+C.
제 의도는 이 프로그램을 10초 후에 자동으로 종료시키려는 건데, 작성자와 이야기를 해보니 이 프로그램에는 시간 제한이 없다고 하더군요.
죽이려고 했는데 kill PID
프로그램 PID
이 실행될 때마다 변경됩니다. 일정 간격 후에 어떻게 중지합니까 bash
?
또는 Python에서 명령을 사용하여 이를 실행할 수 있습니다 os.system()
.
답변1
가장 간단한 해결책은 timeout
GNU coreutils 컬렉션을 사용하는 것입니다(대부분의 Linux 시스템에 기본적으로 설치됨).
timeout 10 ./sopare.py -l
man timeout
자세한 옵션은 유틸리티 설명서( )를 참조하세요 . GNU가 아닌 시스템에서는 gtimeout
이 유틸리티를 GNU coreutils처럼 설치할 수 있습니다.
GNU coreutils를 사용할 수 없는 경우 다른 옵션은 백그라운드에서 프로세스를 시작하고 종료 신호를 보내기 전에 10초 동안 기다리는 것입니다.
./sopare.py -l &
sleep 10
kill "$!"
$!
가장 최근에 시작된 백그라운드 프로세스(이 경우 Python 스크립트)의 프로세스 ID입니다.
대기 시간이 다른 용도로 사용되는 경우:
./sopare.py -l & pid=$!
# whatever code here, as long as it doesn't change the pid variable
kill "$pid"
답변2
다음 bash 스크립트를 사용해 보세요:
#! /bin/bash
./soapre.py -l
PID=`ps u | awk ' $11 == "./soapre.py" { print $2 }'`
sleep 10
kill $PID
이 명령은 스크립트가 백그라운드에서 실행되는 sleep 10
동안에만 bash 스크립트를 일시 중지한다고 가정합니다 . soapre.py
또한 COMMAND
열의 ps u
값이 "./soapre/py"
. 스스로 할 수 있는 간단한 수정이지만 작동해야 합니다.