Profundizando en la respuesta de sashoalm, he probado ambos escenarios y estos son los resultados:
Mis experimentos muestran que hacer
killall --user $USER --ignore-case --signal INT ffmpeg
Produce lo siguiente en la consola donde se estaba ejecutando ffmpeg
Exiting normally, received signal 2.
Mientras hace
killall --user $USER --ignore-case --signal SIGTERM ffmpeg
Produce
Exiting normally, received signal 15.
Entonces parece que ffmpeg está bien con ambas señales.
Sistema:Debian GNU/Linux 9 (extendido), 2020-02-28
Las versiones más nuevas de ffmpeg ya no usan 'q', al menos en Ubuntu Oneiric, sino que dicen que presione Ctrl + C para detenerlos. Entonces, con una versión más nueva, simplemente puede usar 'killall -INT' para enviarles SIGINT en lugar de SIGTERM, y deberían salir sin problemas.
Aquí hay un buen truco que descubrí cuando me enfrenté a este problema:haga un archivo vacío (no tiene que ser una tubería con nombre ni nada), luego escriba 'q' cuando sea el momento de detener la grabación.
- $ toque detener
- $ <./stop ffmpeg -i ... salida.ext>/dev/null 2>>Capture.log &
- $ espera el tiempo de parada
- $ echo 'q'> detener
FFmpeg se detiene como si hubiera recibido 'q' del terminal STDIN.