以下のスクリプトはorと完全に機能しますが、orbash
とは機能しません。押した後もまだ機能しません。でのみ作業できますが、では作業できません。sudo bash
sh
enter
^C
^\
^Z
sudo bash
printf '#!/bin/sh\nread var\n' > myscript
chmod +x myscript
sh -c "timeout -k 1 10 ./myscript"
# it does work when `bash` is used instead of `sh`
を使用できることを知っていますread -t 10
。 (次のバージョンでは利用できず、次のようにsh
動作します。ただとにかく使用を中止するとtimeout
。 )しかし、私がそれを使う理由は(他のもの)にそれが必要timeout
だからです。私は解決策は必要ありませんが、/物事の説明が必要で、andの解決策を探したいと思います。read
myscript
bash
sudo bash
timeout
read
答え1
なぜこれが起こるのかはまだわかりませんが、これはさまざまなシェルがシグナルを実行して処理する方法に関連しています。どうやらこんな形ですね一部解決策:
sh -c "timeout --foreground -k 1 5 ./myscript"
以下と同じsudo bash
:
sudo bash -c "timeout --foreground -k 1 5 ./myscript"
man timeout
次のように説明しますか?
--foreground
when not running timeout directly from a shell prompt,
allow COMMAND to read from the TTY and get TTY signals; in this
mode, children of COMMAND will not be timed out
これが何を意味するのか、結果が何であるかはよくわかりませんが、おそらくこれはあなたや他の人に役立ちます。