我需要创建一个特定的工作流程,即:
检查某个TCP端口是否可用
如果可用 - 执行命令A然后执行命令B
否则 - 跳过A,立即运行B
你们可以帮助我吗?
注意:命令A只是占用端口的应用程序的kill-switch
例如,我可以从以下内容开始:
lsof -wni tcp:20000 | grep listen
让我们说这会给我带来像
这样的东西ruby 5055 ag 9u IPv4 0x1f65a8e25318d67d 0t0 TCP 127.0.0.1:dnp (LISTEN)
现在我如何抓取并将该PID传递到kill
?如何知道第一个命令是否没有结果(即没有任何内容正在侦听20000)?
答案 0 :(得分:1)
这个怎么样?
nc -z localhost 3900 # 3900 -> your port
if [[ "$?" -eq "1" ]]; then
do_a
fi
do_b
编辑:你改变了你的问题 - 现在如果你想真正获得另一个故事的PID ...尝试这个(取自here):
#change 80 to your port
pid=$(netstat -tlnp | awk '/:80 */ {split($NF,a,"/"); print a[2],a[1]}')
if [[ "$pid" -neq "0" ]]; then
kill -9 "$pid"
fi
do_something