Необходимо автоматизировать нажатие Ctrl+C

На моём VDS сервере я сканирую диапазон ip адресов но бывает такое что некоторые адреса вызывают проблему и программа останавливается и вывод какой либо информации в консоль прекращается, в таком случае для того чтобы перейти к следующему адресу необходимо нажать Ctrl+C. Возможно ли написать bash-скрипт который в такой ситуации пропустит проблемный адрес?


Ответы (2 шт):

Автор решения: Roman Konoval

Ctrl-C посылает процессу сигнал SIGINT, так что программно это можно сделать так:

kill -SIGINT $PID

Тут $PID - идентификатор процесса.

→ Ссылка
Автор решения: PotroNik

Уже написали что Ctrl+C, отправляет сигнал SIGINT, код сигнала 2
(kill -l - возможные сигналы)

Для автоматизации ожидания определенного времени в командах в которых это не предусмотрено существует команда timeout которая по истечению указанного времени отправит нужный сигнал запущенному процессу.
Синтаксис такой:

timeout -s<сигнал> <время ожидания выполнения> <Команда>

Для примера:

#Гарантированно будет отправлен сигнал SIGINT, так как установлено врем ожидания 3, на команду sleep ожидающую 5 секунд
timeout -s2 3 sleep 5
...

Проверить что команда завершилась по истечению таймаута можно через код возврата, по умолчанию он будет равен 124

...
[ $? -eq 124 ] && { echo "Процесс завершился по таймауту"; }
→ Ссылка