Привет, исследователь Linux! Когда скрипт "зависает" и перестаёт выводить данные, сервер может ждать бесконечно... Как автоматически завершить такой скрипт, если нет вывода в течение 1 минуты?
Вот решение:
output_timeout() (
set -o pipefail
export TIMEOUT=$1; shift
sh -c 'echo "$$"; exec stdbuf -oL "$@" 2>&1' sh "$@" | perl -ne '
BEGIN {
$SIG{ALRM} = sub {
warn "No output within $ENV{TIMEOUT} seconds, killing PID $pid";
kill "TERM", $pid;
}
}
alarm $ENV{TIMEOUT};
if (!$pid) {$pid = $_} else {print}'
)
Пример запуска:
output_timeout 60 ./s1.sh
output_timeout 60 ./s2.sh
output_timeout 60 ./s3.sh
⚡ Пояснение:
- Если скрипт не выводит ничего 60 секунд, он будет автоматически убит.
- После остановки можно запускать следующий скрипт.
- Стандартные потоки stdout и stderr объединены.
🌐 Источник: https://unix.stackexchange.com/questions/789260/how-to-automatically-terminate-shell-scripts-after-1-minute-of-no-output
📩 Завтра: 10 навыков командной строки, которые ускорят твою работу в Linux
Включи 🔔 чтобы не пропустить!
____________________
Дополнительный материал:
🧠 - Установка и настройка Linux-системы: Mint
🧠 - Установка и настройка Linux-системы: Kali
🧠 - Linux команды: ls, rm, mkdir, pwd, cd, echo
#stackoverflow #Linux #bash #скрипты #DevOps #администрирование #автоматизация