есть такой код, назовем его ~/monitor:
- запускаю исследуемую команду
- запускаю top, который исследует исследуемую команду
- и хочу убить top после завершения исследуемой команды
#! /bin/bash
set -m # для fg
# есть 3 (или более) параметра
interval=$1 # 1
outfile="$2" # 2
shift
shift
# 3,4,5 - $@ - исследуемая команда
rm -f "$outfile" # очищаем лог
"$@" >> "$outfile" & # запускаем исследуемую команду в фоне
top -b -d $interval -p $! >> "$outfile" & # начинаем её исследовать
top_pid=$!
fg 1 > /dev/null # ждём завершения первой команды
sleep $interval # еще немного ждём
kill $top_pid # убиваем исследователя
когда я запускаю ~/monitor 5 sleep.log sleep 20
- всё ОК
Но когда я запускаю то же в фоне ~/monitor 5 sleep.log sleep 20 &
- после завершения команды завершается оболочка из которой запущен этот monitor (если запускать из под screen - screen завершается, если напрямую через ssh - закрывается соединение)
Это можно как-то исправить?