!['timeout'과 함께 사용하면 'read' 내장 기능이 무기한 중단됩니다.](https://linux55.com/image/129949/'timeout'%EA%B3%BC%20%ED%95%A8%EA%BB%98%20%EC%82%AC%EC%9A%A9%ED%95%98%EB%A9%B4%20'read'%20%EB%82%B4%EC%9E%A5%20%EA%B8%B0%EB%8A%A5%EC%9D%B4%20%EB%AC%B4%EA%B8%B0%ED%95%9C%20%EC%A4%91%EB%8B%A8%EB%90%A9%EB%8B%88%EB%8B%A4..png)
아래 스크립트는 or와 완벽하게 작동 하지만 or bash
와는 작동하지 않습니다 . 누른 후에도 여전히 작동하지 않습니다 . 에서만 작업 할 수 있지만 에서는 작업할 수 없습니다 .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
이것이 무엇을 의미하는지, 결과가 무엇인지는 잘 모르겠지만 아마도 이것이 당신이나 다른 사람에게 도움이 될 것입니다.