我正在寻找一种轻量级的解决方案,以在挂起时通过输出重定向终止命令。我目前的解决方案
if [[ -w /tmp/mypipe ]]; then
timeout --kill-after 10 5 echo "1" > /tmp/mypipe
fi
仅当命令的左侧部分不能正常工作时才有效(例如,没有人从管道中读取)。但是我发现了重定向挂起的情况——这至少是任务不完全同步的问题,我现在无法解决。
有几个相关的问题,如this、this或that。最后一个主要涵盖了我的问题,但我仍在寻找更苗条的解决方案。它建议像这样工作
( CMDPID=$BASHPID; \
(sleep 5; kill -9 $CMDPID >& /dev/null) & echo "1" > /tmp/mypipe )
但这会产生两个新的 bash 进程。有没有更轻量级的解决方案来解决这个问题?