gpt4 book ai didi

linux - 使用 netstat 查明端口是否被监听的 Shell 脚本?

转载 作者:太空狗 更新时间:2023-10-29 11:49:17 24 4
gpt4 key购买 nike

我有一个服务器,其中某个端口 (9999) 正在被 PHP 套接字服务器监听。发生的事情是设备可以连接到套接字并发送消息。代码现在工作正常,但是,我注意到套接字有时会关闭或消失,我需要能够自动将其恢复在线状态,而无需登录并再次运行它。

我的想法是编写一个 Shell 脚本,通过 netstat 检查端口 9999 上是否有进程在运行,如果没有,脚本将触发 PHP 套接字服务器再次上线。然后,Cron 每 1 或 2 分钟调用一次此 Shell 脚本,以检查 PHP 套接字是否正在运行。

我对 Shell 脚本只有最基本的了解,到目前为止,这是我用 Shell 编写的唯一其他内容:

#!/bin/sh

if pidof "my process name here" >/dev/null; then
echo "Process already running"
else
echo "Process NOT running!"
sh /fasterthancron.sh
fi

我认为我应该能够在某种程度上重用这段代码,但我不确定用什么替换 if 条件

我的想法是我应该使用 netstat -tulpn 来找出正在运行的进程,但我不确定如何过滤该列表以查找是否有特定进程在端口 9999 上运行。

最佳答案

如果您使用 netstat -tlpn(或其替代品 ss -tpln),您可以 grep 查找 9999 并查找监听的进程它在“本地地址”下。

ss -tpln | awk '{ print $4 }' | grep ':9999'

或者,如果可以,请使用 netcattelnet 例如 nc -v localhost 9999

if echo -n "\cD" | telnet ${host} ${port} 2>/dev/null; then
...
fi

关于linux - 使用 netstat 查明端口是否被监听的 Shell 脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47764777/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com