gpt4 book ai didi

shell - 后台进程输出到Shell变量的输出

转载 作者:行者123 更新时间:2023-12-01 09:37:44 25 4
gpt4 key购买 nike

我想将命令/脚本的输出输出到一个变量,但该进程被触发在后台运行。我尝试如下,很少有服务器正确运行它,我得到了响应。但在少数情况下,我得到的 i_res 是空的。

我试图在后台运行它,因为命令有机会进入挂起状态,我不想挂起父脚本。

希望我能尽快收到回复。

#!/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"

最佳答案

尝试这样的事情:

#!/bin/ksh


pid=$$ # parent process
(sleep 5 && kill $pid) & # this will sleep and wake up after 5 seconds
# and kill off the parent.
termpid=$! # remember the timebomb pid
# put the command that can hang here
result=$( ls -l )
# if we got here in less than 5 five seconds:
kill $termpid # kill off the timebomb
echo "$result" # disply result
exit 0

将您需要的任何消息添加到代码中。平均而言,这将比总是有一个 sleep 语句更快地完成。您可以通过命令 sleep 6 而不是 ls -l

来查看它的作用

关于shell - 后台进程输出到Shell变量的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31862857/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com