特定の時間(たとえば、1分)でコマンドを実行する方法を知りたいです。実行が完了しない場合は停止できる必要があります。
答え1
使用timeout
:
NAME
timeout - run a command with a time limit
SYNOPSIS
timeout [OPTION] DURATION COMMAND [ARG]...
timeout [OPTION]
(このコマンドがない場合、または非常に古いシェルとの互換性が必要で、いくつかの完全に具体的な要件がある場合...これを確認してください。この問題;-))
答え2
timeout
ファイルにリダイレクトを使用する方法
このcat
場合この質問には(強調する):
45秒程度の大容量ファイルをキャプチャして画面に出力するにはどうすればよいですか?または別のファイルにリダイレクトしてください。
これが必要な場合:
cat /dev/ttyUSB0 > out.txt
...これだけではありません。
cat /dev/ttyUSB0
それではtimeout
うまくいきません。
# This *does* work!: timeout after 0.5 sec
timeout 0.5 cat /dev/ttyUSB0
# Does NOT work: try to redirect a response over serial to a file.
# Using `timeout` with redirection of stdout to a file does *not*
# seem to work!
timeout 0.5 cat /dev/ttyUSB0 > out.txt
だから解決策はするどのように機能するかは、まず出力を変数に保存し、timeout
そのセクションでのみ使用してから、次のようにファイルに書き込むことです。
response_str="$(timeout 0.5 cat /dev/ttyUSB0)"
printf "%s" "$response_str" > out.txt
また、見ることができます
- Stack Overflowに対する私の答えは次のとおりです。Bashのリダイレクトに関するすべて