masonitedoors/wait-for-it

一个纯bash脚本,用于测试和等待TCP主机和端口的可用性。

安装次数: 2,134

依赖项: 0

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 2,274

语言:Shell

1.0.0 2020-04-23 14:24 UTC

This package is auto-updated.

Last update: 2024-09-23 23:55:58 UTC


README

wait-for-it.sh是一个纯bash脚本,用于等待主机和TCP端口的可用性。它对于同步依赖服务的启动,如链接的docker容器非常有用。由于它是一个纯bash脚本,所以没有外部依赖。

用法

wait-for-it.sh host:port [-s] [-t timeout] [-- command args]
-h HOST | --host=HOST       Host or IP under test
-p PORT | --port=PORT       TCP port under test
                            Alternatively, you specify the host and port as host:port
-s | --strict               Only execute subcommand if the test succeeds
-q | --quiet                Don't output any status messages
-t TIMEOUT | --timeout=TIMEOUT
                            Timeout in seconds, zero for no timeout
-- COMMAND ARGS             Execute command with args after the test finishes

示例

例如,让我们测试是否可以访问www.google.com上的端口80,如果可用,则输出消息google is up

$ ./wait-for-it.sh www.google.com:80 -- echo "google is up"
wait-for-it.sh: waiting 15 seconds for www.google.com:80
wait-for-it.sh: www.google.com:80 is available after 0 seconds
google is up

您可以使用-t--timeout=选项设置自己的超时时间。将超时时间设置为0将禁用超时

$ ./wait-for-it.sh -t 0 www.google.com:80 -- echo "google is up"
wait-for-it.sh: waiting for www.google.com:80 without a timeout
wait-for-it.sh: www.google.com:80 is available after 0 seconds
google is up

无论服务是否启动,都会执行子命令。如果您只想在服务启动时执行子命令,请添加--strict参数。在这个例子中,我们将测试www.google.com上的端口81,这将失败

$ ./wait-for-it.sh www.google.com:81 --timeout=1 --strict -- echo "google is up"
wait-for-it.sh: waiting 1 seconds for www.google.com:81
wait-for-it.sh: timeout occurred after waiting 1 seconds for www.google.com:81
wait-for-it.sh: strict mode, refusing to execute subprocess

如果您不想执行子命令,请省略--参数。这样,您可以在自己的脚本中测试wait-for-it.sh的退出条件,并确定如何进行下一步

$ ./wait-for-it.sh www.google.com:80
wait-for-it.sh: waiting 15 seconds for www.google.com:80
wait-for-it.sh: www.google.com:80 is available after 0 seconds
$ echo $?
0
$ ./wait-for-it.sh www.google.com:81
wait-for-it.sh: waiting 15 seconds for www.google.com:81
wait-for-it.sh: timeout occurred after waiting 15 seconds for www.google.com:81
$ echo $?
124