ハングした場合に出力リダイレクトでコマンドを強制終了する軽量のソリューションを探しています。私の現在の解決策
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 )
しかし、これにより 2 つの新しい bash プロセスが生成されます。その問題に対するより軽量な解決策はありますか?