Я хочу получить вывод команды/скрипта переменной, но процесс запускается в фоновом режиме. Я попробовал, как показано ниже, и несколько серверов правильно работали, и я получил ответ. Но в немногих я получаю i_res как пустой.Выход вывода фонового процесса в переменную Shell
Я пытаюсь запустить его в фоновом режиме, так как команда имеет шанс попасть в состояние зависания, и я не хочу повесить родительский скрипт.
Уверен, что скоро получите ответ.
#!/bin/ksh
x_cmd="ls -l"
i_res=$(eval $x_cmd 2>&1 &)
k_pid=$(pgrep -P $$ | head -1)
sleep 5
c_errm="$(kill -0 $k_pid 2>&1)"; c_prs=$?
if [ $c_prs -eq 0 ]; then
c_errm=$(kill -9 $k_pid)
fi
wait $k_pid
echo "Result : $i_res"
Я не могу убить текущий процесс ($$) после 5 секунд, так как другие действия также должны запускаться на основе вывода команды. То, что мне нужно, результат должен иметь результат $ (ls -l), и если «ls -l» повесится в любом случае, я должен убить эту конкретную команду и продолжить. – nibs