Управление заданиями над сценарием Bash

Хм я всегда принимал (возможно, неправильно, и они оба основа из того же источника), что это имело некоторое отношение к тогдашней безумно популярной проблеме RC5, которая вовлекла клиент Distributed.net: http://www.distributed.net/RC5, Который по совпадению был в 1997 также...

2
28.08.2015, 16:56
2 ответа

Попробуйте запустить сценарий как сценарий, а не искать его:

$ bash <scriptname>
5
27.01.2020, 21:56

Проблема в том, что 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
  • With trap: ./ script_name trap

Затем Ctrl + C , чтобы увидеть разницу.


И снова; не источник этих сценариев из приглашения терминала.

0
27.01.2020, 21:56

Теги

Похожие вопросы