我想在进程打开端口 3000 时触发脚本。该进程是一个 Rails 开发服务器,我只想在它完成旋转并且端口 3000 开始接受请求时收到通知。
答案1
这是一个简单循环直到端口打开的 oneliner。这虽然又快又脏,但可能会让你入门。
while ! nc -z localhost 3000; do sleep 0.1; done; echo 'The server is up!'
将语句替换echo
为您选择的操作。
nc
是 Netcat,“TCP/IP 的瑞士军刀”,-z
意思是:不发送任何数据,只检查端口是否打开,while ! nc -z …; do sleep 0.1; done
:继续检查并休眠十分之一秒,直到端口打开,即 Netcat 返回零(成功)状态。