프로세스가 X초 이상 실행되고 있는지 어떻게 감지하고 이에 대해 조치를 취할 수 있습니까?

프로세스가 X초 이상 실행되고 있는지 어떻게 감지하고 이에 대해 조치를 취할 수 있습니까?

나는 데비안을 사용하고 있습니다.

mp3를 생성하기 위해 ffmpeg 프로세스를 호출합니다. 이것은 shell_exec를 사용하는 PHP 스크립트에서 호출됩니다. 이것은 99%의 경우 잘 작동합니다.

때로는 ffmpeg 프로세스가 종료되지 않고 ffmpeg가 몇 시간 동안 실행되는 경우가 있습니다. 매개변수를 천천히 조정하고 있어서 발생 빈도는 줄어들었지만 여전히 가끔 발생합니다.

최상위 프로세스를 보면 CPU와 디스크를 소모하고 있는데 프로세스가 종료되지 않은 것을 가끔 볼 수 있습니다.

993 www-data 20 0 252012 38904 27384 R 99.7 1.9 390:09.84 ffmpeg

나는 일반적으로 프로세스를 찾고 실행되는 매개변수가 내 PHP 스크립트와 일치하는지 확인하여 프로세스가 올바른지 확인합니다.

ps -eo args | grep ffmpeg

그런 다음 프로세스 ID를 가져와 종료한 다음 처리 중이던 파일을 찾아 해당 파일도 삭제합니다.

-rw-r--r-- 1 www-data www-data 14G Feb 9 21:20 cfcd208495d565ef66e7dff9f98764da.mp3- 어 오

어떤 단어를 구글에 검색해야 할지 모르겠습니다.

X초 이상 실행된 모든 프로세스를 출력하고 해당 프로세스 세부 정보를 매개변수와 프로세스를 일치시킬 수 있는 프로세스로 연결할 수 있는 Supervisord/cron 작업을 통해 실행할 수 있는 감독 프로세스 또는 스크립트에 대한 아이디어를 찾고 있습니다. 스크립트는 패턴과 일치하고(어떤 종류의 불쾌한 정규식을 사용하고 싶습니다) 프로세스를 종료하고 해당 인수와 일치하는 모든 파일을 삭제합니다.

답변1

당신은 그것을 사용할 수 있습니다정지시키다시간이 제한된 명령을 실행합니다.

예를 들어:

timeout 2 yes

2초 동안 "y"를 표시합니다(그렇지 않으면 영원히 지속됩니다).

관련 정보