1
nohup someprogram &> $LOG &
echo "what happen: $?"

当我无法访问 $LOG 或某个程序以 0 以外的状态退出时,我希望能够检测到这一点。

目前,当出现权限错误时,$? 返回 0。是否可以让 bash 告诉我执行上一条语句时出现问题?

4

2 回答 2

1

尝试等待返回子进程的状态。

nohup someprogram &> $LOG &
wait $!
echo $?
于 2013-05-18T11:00:02.410 回答
0

如果您在后台运行某个进程,则无法立即可靠地测试它是否失败——因为无论何时检查它,它都可能在失败之前仍在运行。要获得可靠的解决方案,您必须wait.

但是,如果您不关心完全可靠性,而只想检查您调用的程序是否存活了几分之一秒,您可以这样做

cpid=$!
sleep 0.1
jobs -l | grep $cpid | grep running && working=1

该片段可以增强,但它应该给你基本的想法。

请注意,某些睡眠实现仅支持整数。您可以在大多数 Linux 发行版上找到 GNU 的 sleep 也支持浮点数。

于 2017-04-04T18:40:32.427 回答