Хм я всегда принимал (возможно, неправильно, и они оба основа из того же источника), что это имело некоторое отношение к тогдашней безумно популярной проблеме RC5, которая вовлекла клиент Distributed.net: http://www.distributed.net/RC5, Который по совпадению был в 1997 также...
Попробуйте запустить сценарий как сценарий, а не искать его:
$ bash <scriptname>
Проблема в том, что ffmpeg
улавливает SIGINT
- сигнал, отправленный Ctrl + C , но он игнорируется в bash, поскольку он не знает, предназначен ли сигнал для него.
Одним из способов решения этой проблемы является добавление ловушки для сигнала в сценарий и обработка его локально.
Например, добавить ловушку в начало файла с командами. Затем сделайте его исполняемым и запустите, или $ bash script_file
- не source
:
trap 'exit' INT
Более интересная строка, которая прерывается с сообщением и статусом выхода 130 :
trap 'printf "Received SIGINT: Terminating.\n";exit 130' INT
Затем:
$ ./file_with_commands
Или сценарий убийцы источника:
#!/bin/bash
trap 'printf "Received SIGINT: Terminating.\n";exit 130' INT
source "$1"
Тогда:
$ ./sourcetrap file_with_commands
Простой пример сценария может быть:
#!/bin/bash
if [[ $1 = trap ]]; then
trap 'printf "Received SIGINT: Terminating.\n";exit 130' INT
fi
ping localhost
ping localhost
ping localhost
./ script_name
./ script_name trap
Затем Ctrl + C , чтобы увидеть разницу.
И снова; не источник
этих сценариев из приглашения терминала.