タイムアウトはまだ時間の一定期間後に実行し、その後、コマンドを終了した場合、指定されたコマンドを実行するコマンドラインユーティリティです。timeoutコマンドは、GNUコアユーティリティパッケージの一部で、パッケージは、ほとんどすべてのLinuxディストリビューションにインストールされています
使い方
構文:
timeout [OPTION] DURATION COMMAND [ARG]...
DURATIONは、オプションのサフィックスが続く正の整数または浮動小数点数であることができます。
S - 秒(デフォルト)
M - 分
時間 - 時間
D - デイ
あなたが任意のユニットを追加していない場合、デフォルトは秒です。タイムアウトであれば期間は、その後、無効に関連する0です。
例
pingの終了後5秒:
[root@localhost ~]# timeout 5 ping www.baidu.com
PING www.a.shifen.com (61.135.169.125) 56(84) bytes of data.
64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=1 ttl=55 time=16.3 ms
64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=2 ttl=55 time=16.0 ms
64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=3 ttl=55 time=16.7 ms
64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=4 ttl=55 time=16.0 ms
64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=5 ttl=55 time=17.6 ms
5分後にping操作を終了します。
[root@localhost ~]# timeout 5m ping www.baidu.com
PINGを終了した後、1日目:
[root@localhost ~]# timeout 1d ping www.baidu.com
pingの終了後2.5秒:
[root@localhost ~]# timeout 2.5s ping www.baidu.com
PING www.a.shifen.com (61.135.169.121) 56(84) bytes of data.
64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=1 ttl=55 time=14.9 ms
64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=2 ttl=55 time=15.6 ms
64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=3 ttl=55 time=15.6 ms
指定された信号は、送信
制限時間に達した任意の信号を与えられていない場合、タイムアウトが管理SIGTERM信号にコマンドを送信します。あなたは、-sを使用することができます(-signal)オプションは、送信するシグナルを指定します。
5秒の終了後に、pingコマンドにSIGKILLを送信します。
[root@localhost ~]# sudo timeout -s SIGKILL 5s ping www.baidu.com
PING www.a.shifen.com (61.135.169.125) 56(84) bytes of data.
64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=1 ttl=55 time=17.2 ms
64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=2 ttl=55 time=16.6 ms
64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=3 ttl=55 time=16.7 ms
64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=4 ttl=55 time=16.2 ms
64 bytes from 61.135.169.125 (61.135.169.125): icmp_seq=5 ttl=55 time=16.7 ms
Killed
彼の名前は信号も彼の番号を指定することができます指定することができます。物事のSIGKILLの数は、動作を終了、5秒後に、下記の使用しました:
[root@localhost ~]# sudo timeout -s 9 5s ping www.baidu.com
PING www.a.shifen.com (61.135.169.121) 56(84) bytes of data.
64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=1 ttl=55 time=15.5 ms
64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=2 ttl=55 time=16.3 ms
64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=3 ttl=55 time=14.9 ms
64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=4 ttl=55 time=16.0 ms
64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=5 ttl=55 time=22.0 ms
Killed
利用可能なすべての信号を知りたい、使用することは、すべての信号を表示するには、-lコマンドを殺します。
[root@localhost ~]# kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
[root@localhost ~]#
メインカードをオフにするプロセス
SIGTERMは、制限時間を超えたときにデフォルトで送信された信号は、捕捉又は特定のプロセスを無視することができます。この場合、プロセスは終了信号を送信した後に実行を継続します。
コマンドが終了するために実行されることを保証するために、時間のいずれか、続い-k(-kill後)オプションを使用します。与えられた時間制限に達した後の端を強制します。
次の例では、timeoutコマンドは、コマンドが終了していない場合、コマンドは10秒後に終了します、1分を実行しています:
[root@localhost ~]# timeout -k 10s 1m sh test.sh
フォアグラウンドで実行されています
デフォルトでは、タイムアウトの実行は、バックグラウンドでコマンドを管理します。あなたがフォアグラウンドでこのコマンドを実行したい場合は、-foregroundオプションを使用します。
[root@localhost ~]# timeout --foreground 5m ./script.sh
概要
コマンドタイムアウト制限時間を操作するためのコマンド。多くの場合、制限時間を与えられ、ちょうどコマンドは十分です与えます。
公開番号より転載: