私の最初の問題は、タイムアウト時にプロセスとその子を強制終了することでした。そして、GNUtimeout
は非常に良い選択であることがわかりました。
ただし、このテストケースでは、事態は奇妙になります。
test1.sh
次のようなものがあるとします。
#!/bin/sh
# test1.sh
output=`timeout 2 ./run.sh`
echo $output
そしてrun.sh
このように:
#!/bin/sh
# run.sh
sleep 8s&
がそのばかげたプロセスを担当しtest1.sh
てから終了するため、直観的にはすぐに終了することを期待する必要があります。init
sleep
run.sh
でも:
sh-4.2$ time ./test1.sh
real 0m8.022s
user 0m0.013s
sys 0m0.003s
そして、これを作成するとtest2.sh
:
#!/bin/sh
# test2.sh
timeout 2 ./run.sh
sh-4.2$ time ./test2.sh
real 0m0.014s
user 0m0.003s
sys 0m0.007s
明らかに、コマンド置換中に何か問題が発生しましたが、なぜでしょうか?