nohup someprogram &> $LOG &
echo "what happen: $?"
当我无法访问 $LOG 或某个程序以 0 以外的状态退出时,我希望能够检测到这一点。
目前,当出现权限错误时,$? 返回 0。是否可以让 bash 告诉我执行上一条语句时出现问题?
尝试等待返回子进程的状态。
nohup someprogram &> $LOG &
wait $!
echo $?
如果您在后台运行某个进程,则无法立即可靠地测试它是否失败——因为无论何时检查它,它都可能在失败之前仍在运行。要获得可靠的解决方案,您必须wait
.
但是,如果您不关心完全可靠性,而只想检查您调用的程序是否存活了几分之一秒,您可以这样做
cpid=$!
sleep 0.1
jobs -l | grep $cpid | grep running && working=1
该片段可以增强,但它应该给你基本的想法。
请注意,某些睡眠实现仅支持整数。您可以在大多数 Linux 发行版上找到 GNU 的 sleep 也支持浮点数。