masonitedoors / wait-for-it
一个纯bash脚本,用于测试和等待TCP主机和端口的可用性。
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