vishnubob / wait-for-it
纯bash脚本,用于测试和等待TCP主机和端口的可用性
dev-master
2020-08-22 23:18 UTC
This package is not auto-updated.
Last update: 2024-09-13 19:57:31 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
社区
Debian: 有一个 Debian 软件包。